Javascript Node.js修改不同文件中的变量

Javascript Node.js修改不同文件中的变量,javascript,node.js,Javascript,Node.js,我是Node.js的新手,我想知道一些事情。我正在使用express和socket.io。有些值应该是可更改的,比如说这个“标志”具有布尔类型变量-默认情况下这是'false' 但有时,特别是当我点击某个按钮时,它会变成“true”。express和socket.io工作流很好,但我不知道如何从不同的文件修改变量,而不仅仅是复制它 请参阅下面的代码以了解 Main.js var flag = false; exports.flag = flag; // display flag every

我是Node.js的新手,我想知道一些事情。我正在使用express和socket.io。有些值应该是可更改的,比如说这个“标志”具有布尔类型变量-默认情况下这是
'false'

但有时,特别是当我点击某个按钮时,它会变成
“true”
。express和socket.io工作流很好,但我不知道如何从不同的文件修改变量,而不仅仅是复制它

请参阅下面的代码以了解

Main.js

var flag = false;
exports.flag = flag; 

// display flag every second
setInterval((function(){console.log(flag)}), 1000);
Remote.js

// I want to change 'original flag' at main.js in remote.js 
// How can I do that? I think below is just copying it, so doesn't effect to main.js

flag = require('/Main').flag;

// the flag will be 'true' after some moment
flag = true;
false
false
false
...
true
true
global.flag = false; 

// display flag every second
setInterval((function(){console.log(global.flag)}), 1000);
// the flag will be 'true' after some moment
global.flag = true;
我希望在main.js中得到的预期结果

// I want to change 'original flag' at main.js in remote.js 
// How can I do that? I think below is just copying it, so doesn't effect to main.js

flag = require('/Main').flag;

// the flag will be 'true' after some moment
flag = true;
false
false
false
...
true
true
global.flag = false; 

// display flag every second
setInterval((function(){console.log(global.flag)}), 1000);
// the flag will be 'true' after some moment
global.flag = true;

我该怎么做?

您是否尝试过使用包含的对象而不是属性

这样,就可以在对象上保留引用,而不是基元值

main = require('/Main');

main.flag = true;
编辑: 正如Mike C在评论中所说,您还需要在setInterval中使用对象

setInterval((function(){console.log(exports.flag)}), 1000);

它之所以有效,是因为
对象
是一种引用类型,而
字符串
布尔
是基本类型。

您可以定义一个全局变量,并在任何需要的地方访问或更改它

main.js

// I want to change 'original flag' at main.js in remote.js 
// How can I do that? I think below is just copying it, so doesn't effect to main.js

flag = require('/Main').flag;

// the flag will be 'true' after some moment
flag = true;
false
false
false
...
true
true
global.flag = false; 

// display flag every second
setInterval((function(){console.log(global.flag)}), 1000);
// the flag will be 'true' after some moment
global.flag = true;
remote.js

// I want to change 'original flag' at main.js in remote.js 
// How can I do that? I think below is just copying it, so doesn't effect to main.js

flag = require('/Main').flag;

// the flag will be 'true' after some moment
flag = true;
false
false
false
...
true
true
global.flag = false; 

// display flag every second
setInterval((function(){console.log(global.flag)}), 1000);
// the flag will be 'true' after some moment
global.flag = true;

他们还必须更改
main.js
中的代码,以使用
setInterval
中的
exports.flag
。添加了更多详细信息:)谢谢,也许这是一种简单的方法。