更改node.js模块变量

时间:2016-05-11 10:10:39

标签: javascript node.js

在我的应用程序中,我以这种方式共享配置变量:

const config = require('./config')

和config.js是一个单独的文件:

module.exports = {
  option1: value1,
  option2: value2
};

如果我动态更改config对象中的属性, 它是否会影响其他模块?

例如:

config.js

module.exports = { foo: 'bar' }

app1.js

var config = require('./config');
module.exports.sayFoo = function () {
    console.log(config.foo);
}

app2.js

var config = require('./config');
var app1 = require('./app1');
config.foo = 'baz';

app1.sayFoo();


# node app2.js =====> ??

2 个答案:

答案 0 :(得分:1)

写入。我自己也会看到它。

我测试了两个案例:

1)您可以动态更改所需模块的属性吗?

2)你能动态改变出口的模块吗?

config.js

module.exports = { foo: 'bar' }

app1.js

var config = require('./config');
var app2 = require('./app2');
config.foo = 'baz'; // change required module attribute

app2.sayFoo();

console.log(app2.haveFoo);

app2.js

var config = require('./config');
module.exports.sayFoo = function () {
    console.log(config.foo);
    module.exports.haveFoo = true; //dynamic export
}

结果

# node app1.js
baz
true

这两种情况都有效。

答案 1 :(得分:0)

Node中的

require 会缓存响应,所以如果你两次调用同一个东西,它将使用缓存版本。

然而,thkang是对的。只要运行它,你就会亲眼看到它。