我正在使用Nodejs中的3个文件。 File1.js1 has a
计数器= 11和getter() setter()
。 File2.js
将值设置为counter=10
。但是当我在File3.js
中检索计数器的值时,我可以使用旧值1,而不是File2
设置的值。
//=====File1.js=====
var store = module.exports = {
counter: 1,
getCounter: function () {
return store.counter;
},
setCounter: function (value) {
store.counter = value;
}
}
//=====File2.js=====
var c = require('./File1');
c.setCounter(10);
console.log(c.getCounter()) //prints 10
//=====File3.js=====
var c = require('./File1');
console.log(c.getCounter()) //prints 1
这似乎是一个简单而不变的概念。我认为问题出在这里,而且我不知道如何解决它。
File1和File2在Node-service-1上运行(在http://localhost:1000处可用),File3在Node-service-2上运行(在http://localhost:1100处可用)。
在典型情况下,多个用户访问Node-service-1和Node-service-2,只有第一个用户获得1000个可用。我使用portfinder
包获取下一个可用端口,并在1001上为User2运行Node-service-1。但Node-service-2不知道User2正在端口1001上运行服务,并且错误地尝试获取1000(对于User2)并失败。
所以问题是Node-service-2如何知道运行Node-service-1的端口?
答案 0 :(得分:0)
如果 file3.js 在不同的节点实例上运行到 file2.js ,那么它将看到 file1.js file2.js 所见的模块。因此,如果两个脚本在不同的节点实例上运行,则不能使用此方法进行通信。如果需要在两个节点实例上的两个脚本之间进行通信,则必须使用套接字,共享内存或共享文件(例如,基于公共数据库)的方法进行通信。