覆盖module.exports中某个键的值

我试图在Helper文件中存储一个值,该值是在Helper的初始require之后计算的,并且该值不会从未定义(因为不知道如何开始)而改变。

有什么办法可以覆盖这个值在其他地方使用?

helper.js:

module.exports = { key:value } 

setup.js:

 var helper = require("./helper.js"); ... // hit a url and get a value helper.key = newValue; 

usage.js:

 var helper = require("./helper.js"); console.log(helper.value) // prints the original value 

stream

 setup.js -requires-> helper.js usage.js -requires-> helper.js 

我已经读过module.exports看起来是只读的,但肯定有办法做到这一点。

另外,是否有可能添加到module.exports初始创build后?

 module.exports["key"] = value; 

在此先感谢,似乎应该是简单的,但它是我的路障。

编辑:忽略第二个问题,我已经得到了这项工作(关于module.exports["key"] )。

我不确定这里有什么问题。 可能是我不明白的加载stream程,有一些疯狂的范围configuration…

你可以这样做,你可以改变出口(不pipe这是一个function,是另一回事)。

想象一下这些模块:

test1.js

 module.exports = { a: '1' } 

test2.js

 var test1 = require('./test1'); module.exports = function() { test1.a = test1.a + '2'; test1.b = 100; }; 

test3.js

 var test1 = require('./test1'); module.exports = function() { test1.a = test1.a + '3'; test1.b = 200; }; 

test4.js

 var test2 = require('./test2')(); var test3 = require('./test3')(); var test1 = require('./test1'); console.log(test1); 

运行node test4时的输出是:

 { a: '123', b: 200 } 

或者如果在模块4中切换了加载模块2和3的顺序

 var test2 = require('./test3')(); var test3 = require('./test2')(); var test1 = require('./test1'); console.log(test1); 

它会变成:

 { a: '132', b: 100 }