【发布时间】:2020-01-11 03:08:05
【问题描述】:
我想从我的 Nodejs 模块发出事件,但它没有按预期工作,因为我们收到一个错误:
Uncaught TypeError: Test.on(...) is not a function.
这里是模块test.js
var util = require("util");
var EventEmitter = require("events").EventEmitter;
function Test() {
EventEmitter.call(this);
}
Test.prototype.test = function (input) {
this.emit("testevent", input);
};
util.inherits(Test, EventEmitter);
module.exports = Test;
在index.js 中,我们有以下内容:
const Test = new (require('./test.js'));
Test.on('testevent', function (test) {
console.log('emitted', test);
});
// Test.test('input');
我只知道index.js 中的代码,因为不会调用Test.test('input');,所以永远不会发出事件。
但是,由于禁用了该行,我对为什么收到Uncaught TypeError: Test.on(...) is not a function 感到困惑。
一旦取消注释Test.test('input');,错误就会消失,并且事件似乎已发出,因为我可以看到记录的行。但为什么?如果线路被禁用,为什么会抛出该错误?我们做错了什么?
【问题讨论】:
标签: javascript node.js events eventemitter