节点变量重置

时间:2017-06-14 12:59:57

标签: node.js

我正在使用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的端口?

1 个答案:

答案 0 :(得分:0)

如果 file3.js 在不同的节点实例上运行到 file2.js ,那么它将看到 file1.js file2.js 所见的模块。因此,如果两个脚本在不同的节点实例上运行,则不能使用此方法进行通信。如果需要在两个节点实例上的两个脚本之间进行通信,则必须使用套接字,共享内存或共享文件(例如,基于公共数据库)的方法进行通信。