Node.js的EventEmitter错误(Node.js EventEmitter error)

2019-08-05 11:12发布

试图继承EvenEmitter时,我有一个错误

/* Consumer.js */
var EventEmitter = require('events').EventEmitter;
var util = require('util');

var Consumer = function() {};

Consumer.prototype = {
  // ... functions ...
  findById: function(id) {
    this.emit('done', this);
  }
};

util.inherits(Consumer, EventEmitter);
module.exports = Consumer;

/* index.js */
var consumer = new Consumer();
consumer.on('done', function(result) {
  console.log(result);
}).findById("50ac3d1281abba5454000001");

/* ERROR CODE */
{"code":"InternalError","message":"Object [object Object] has no method 'findById'"}

我已经试过几乎所有的东西,仍然不工作

Answer 1:

一对夫妇的事情。 要覆盖原型而不是扩展。 此外,移动util.inherits()调用你添加新方法之前:

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

var Consumer = function Consumer() {}

util.inherits(Consumer, EventEmitter);

Consumer.prototype.findById = function(id) {
    this.emit('done', this);
    console.log('found');
};

var c = new Consumer();
c.on('done', function(result) {
  console.log(result);
});

c.findById("50ac3d1281abba5454000001");


文章来源: Node.js EventEmitter error