NodeJS -在文件之间传递变量,但变量需要更新



我有2个文件,我试图将一个变量从一个传递到另一个。Tcp.js接收这个变量,但是如果data.js中的变量发生了变化,Tcp.js不会看到这个变化。有没有一种方法可以让tcp.js看到这些变化?

data.js

var {eventEmitter} = require('./events.js'); 
var storedData = 'Hello from Data';
var myEventHandler = function (data) {
console.log(data)
storedData = data;
}
eventEmitter.on('message-test', myEventHandler);
module.exports = { storedData };

tcp.js

var net = require('net');  
const config = require ('../config'); // various info
const port2 = config.TCP_PORT || 8000;
const {storedData} = require ('./data.js');
// testing to see if the variable is changing
var interval = setInterval(function() {    
console.log(storedData);
},2000)
var server = net.createServer();
server.on('connection', function(socket) {
var remoteAddress = socket.remotePort;   
console.log('A new client has connected!');   
socket.write(storedData);
socket.once('close', function() {
console.log('The connection from %s has been closed', remoteAddress);
clearInterval(interval);
});       
});
server.listen(port2, function() {
console.log('TCP server listening on %s', port2 );   
});

常规变量不能这样做——它们将按值传递,因此会被复制。

您可以像这样通过函数返回常规变量的值——因此,不是导出变量,而是导出返回变量值的函数。然后从另一个模块调用该函数。

或者你可以使用对象({}),因为它是通过引用传递的,所以如果你从一个模块导出对象并在另一个模块中使用它,它们都引用相同的东西并且可以共享状态。