覆盖module.exports中键的值

时间:2013-12-13 02:28:15

标签: javascript node.js

我正在尝试将一个值存储在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"])。

1 个答案:

答案 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 }