捕获不同模块中的事件

我在我的节点应用程序中的一些模块中创build事件,我想在其他模块中捕获此事件,我尝试以下不工作

提高事件的模块

EventEmitter = require("events").EventEmitter; function updatePort(port) { ... var ee = new EventEmitter(); ee.emit("AppDef"); } 

现在我想在不同的模块中捕获这个事件并将其打印到控制台

 EventEmitter = require("events").EventEmitter; var ee = new EventEmitter(); ee.on("AppDef", function () { console.log('Port is defiend ' + port); }) 

我认为问题是我做了两次,但不知道如何克服这个新的…

问题是,您正在创build两个不同的EventEmitter实例,并且您正从一个实例发出并在另一个实例中侦听事件。

为了解决这个问题,你需要在模块之间共享同一个EventEmitter实例

第一单元

 var EventEmitter = require("events").EventEmitter; var ee = new EventEmitter(); function updatePort(port) { ... // emit the port as well ee.emit("AppDef", port); } // export the EventEmitter instance module.exports.ee = ee; 

第二单元

 var mod1 = require('./module1'); // Attach the listener on the EventEmitter instance exported by module1 mod1.ee.on('AppDef', function(port) { console.log('Port is defined ' + port); });