我正在尝试将一个值存储在Helper文件中,该文件是在Helper的初始需求之后计算的,并且该值不会从undefined更改(因为它是未知的开始)。
有什么办法可以覆盖这个值以便在其他地方使用吗?
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
流量
setup.js -requires-> helper.js
usage.js -requires-> helper.js
我已经读过module.exports看似只读,但肯定有办法做到这一点。
此外,是否可以在初始创建后添加到module.exports?
module.exports["key"] = value;
在此先感谢,看起来应该很简单,但这对我来说是一个障碍。
编辑:忽略第二个问题,我已经完成了这项工作(关于module.exports["key"]
)。
答案 0 :(得分:1)
我不确定这里有问题。可能是我不明白加载流程并且有一些疯狂的范围配置...
你可以这样做,你可以改变出口(这是一个特征,是另一回事)。
想象一下这些模块:
<强> 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 }