从参数化模块调用函数.exports



引用此解决方案时,我需要将一个参数传递到utils.js文件的module.exports中。

// utils.js
var module;
module.exports = function (name) {
if (module) return module;
module = {};
module.sayHi = function () {
return `Hi, ${name}`;
};
return module;
};

对于如何在requireutils.js之后调用sayHi,我有点困惑。

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

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

首先创建一个名为module的变量。

var module;

这样做什么都不做,因为您是在模块的范围内这样做的,所以变量已经存在。


然后为module.exports分配一个函数。

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

该函数的第一行显示:

if (module) return module;

module是真值吗?

。它是一个物体。如果不是,那么分配给module.exports会引发异常。

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


现在看看你提到的答案:

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

它在函数的范围内创建了一个新的变量,这样它就不会与现有变量冲突。

最新更新