首页 > 解决方案 > 从参数化的 module.exports 调用函数

问题描述

参考这个解决方案,我需要将参数传递到module.exports我的utils.js文件中。

// utils.js
var module;
module.exports = function (name) {
    if (module) return module;

    module = {};

    module.sayHi = function () {
        return `Hi, ${name}`;
    };

    return module;
};

我对如何在ingsayHi之后调用感到有些困惑。requireutils.js

// index.js
const utils = require("./utils")("Jim");    
utils.sayHi();

我得到TypeError: utils.sayHi is not a function。什么是正确的调用方式sayHi

标签: javascriptnode.js

解决方案


首先,您创建一个名为module.

var module;

这没有任何作用,因为您是在模块范围内执行此操作,因此该变量已经存在。


然后你将一个函数分配给module.exports.

在另一个模块中,您导入该函数并调用它。

该函数的第一行说:

if (module) return module;

module真值吗?

的。它是一个对象。如果不是,那么分配给module.exports将引发异常。

因此,您永远不会覆盖module = {};或分配sayHi功能给它。


现在看看你引用的答案:

module.exports = function (app, db) {
    var module = {};

它在函数范围内创建一个变量,因此它不会与现有变量冲突。


推荐阅读