是为每个需求创build一个node.js模块实例吗?

我正在尝试解决node.js应用程序中的错误。

在一个名为mmm的模块中,我有一个名为xxx的局部variables(未导出),它被设置为false 。 有一个名为enableXXX()的导出函数将variables设置为true 。 另一个模块nnn需要mmm并调用enableXXX()

其他模块需要mmm ,但是看起来对enableXXX()的调用还没有执行。 它performance得好像xxx仍然是false

这是否意味着每个需要创build一个单独的模块实例?

更新

我发现这是一个要求错误的大写字母:

 // Module A var XXX = require("./myDir/xxx.js"); ... // Module B var XXX = require("./mydir/xxx.js"); ... 

这是一个链接到节点文档。 您应该阅读关于caching和警告部分的部分: http : //nodejs.org/api/modules.html#modules_caching

不,不。 让我们做一个实验:

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 

以下是官方文档的解释:

  • 模块在第一次加载后被caching。 这意味着(除其他外)每个调用require('foo')将得到完全相同的对象返回 ,如果它将parsing为相同的文件。