我正在尝试解决 node.js
应用程序中的错误。
在名为 mmm
的模块中,我有一个名为 xxx
的局部变量(未导出),它被设置为 false
。有一个名为 enableXXX()
的导出函数,它将变量设置为 true
。另一个模块 nnn
需要 mmm
并调用 enableXXX()
。
其他模块需要mmm
,但是好像没有调用enableXXX()
。它的行为就好像 xxx
仍然是 false
。
这是否意味着每个都需要创建一个单独的模块实例?
更新
我发现这是一个错误的大写字母:
// Module A
var XXX = require("./myDir/xxx.js");
...
// Module B
var XXX = require("./mydir/xxx.js");
...
最佳答案
不,它没有。让我们做一个实验:
mmm.js:
var xxx = false;
exports.enableXXX = function() {
xxx = true;
}
exports.isEnabled = function() {
return xxx;
}
nnn.js:
require('./mmm').enableXXX();
main.js:
require('./nnn');
console.log('The result is: ' + require('./mmm').isEnabled());
现在让我们运行 main.js
:
$ node main.js
The result is: true
这是来自 the official docs 的解释:
- 模块在第一次加载后被缓存。这意味着(除其他事项外)每次调用 require('foo') 都会得到返回的完全相同的对象,如果它解析为相同的文件的话。
关于javascript - 是否为每个需求创建了一个 node.js 模块实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24125459/