在 node.js 中没有发射方法

has no method of emit in node.js

我做了一个如下所示的简单示例,但出现错误消息“没有 'emit' 的方法”,这是什么问题?

var events = require('events');
var EventEmitter = require('events').EventEmitter;
var util = require('util');

var Door = function (options) {
    events.EventEmitter.call(this);
}   

util.inherits(Door, EventEmitter);


Door.prototype = {
    open:function(){
       this.emit('open');
    }
}

var frontDoor = new Door('brown');

frontDoor.on('open', function() {
    console.log('ring ring ring');
  });
frontDoor.open();

您正在用一个新对象替换 Door 的原型,它也会覆盖(/删除)EventEmitter 原型方法:

Door.prototype = {
    open:function(){
       this.emit('open');
    }
}

相反,只需向现有原型添加一个条目:

Door.prototype.open = function() {
  this.emit('open');
};