javascript - 其他模块中的 Node 事件发射器

标签 javascript node.js eventemitter

我有 3 个不同的 javascript 文件,最小的一个正在发出事件,同时第二个(较大的)文件获取事件并将其进一步发送到主文件。 到目前为止,这是我尝试过的:

//mini.js
var EventEmitter = require('events').EventEmitter;
var ee = new EventEmitter;

console.log("Emitting event");
var message = "Hello world";
ee.emit('testing',message);


//second.js
var mini = require('./mini.js');
var EventEmitter = require('events').EventEmitter;
var ee = new EventEmitter;

mini.on('testing',function(message){
    console.log("Second file received a message:",message);

    console.log("Passing further");
    ee.emit('testing',message);
});

//main.js
var sec = require('./second.js');

sec.on('testing',function(message){
    console.log("Main file received the message",message);
});

但是,我明白了

mini.on('testing',function(message){
        ^
TypeError: undefined is not a function

用 Node 执行文件时出错。

我在这里做错了什么? 谢谢

最佳答案

您没有在 mini.js 中导出您的 EventEmitter 实例。将此添加到 mini.js:

module.exports = ee;

如果你想导出它的 EventEmitter 实例,你还需要在 second.js 中添加类似的行,以使其对 main.js 可用。

你会遇到的另一个问题是,在 second.js 添加它的 testing 事件处理程序之前,你在 mini.js 中发出 testing,所以它最终会错过那个事件。

关于javascript - 其他模块中的 Node 事件发射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36259965/

相关文章:

arrays - 使用 NodeJS 更新插入 MongoDB 数组

node.js - Eventemitter代码是否阻塞

node.js - Nodejs 回调或 eventEmitter

reactjs - 如何在 React JSX 中使用 Stencil 的 `EventEmitter`?

javascript - jquery悬停并停留直到鼠标移出

javascript - 如何将 url 插入 Javascript var 索引中的文本?

javascript - 每 15 秒向 Rails 方法发出一次 JS 请求有多高效

javascript - 分割 youtube 视频 url

Node.js MongoDb 聚合 Sum all 和 Sum all with certain field

Node.js 多线程和异步