У меня небольшая проблема, играющая с модульными шаблонами. Я пытаюсь прикрепить EventEmitter к моей библиотеке, но это, кажется, не работает, и я получаю:Проблема с наследованием EventEmitter
cmd.on('message',function(msg){
^
TypeError: undefined is not a function
Моего Lib выглядит так:
var util = require('util');
var EventEmitter = require("events").EventEmitter;
var TestLib = function() {
var self = this;
function sendRandom(cb){
self.emit('message','whatever');
cb(null,0);
}
return {
init: function(cb) {
console.log('init');
cb(null);
},
run: function(params,cb){
console.log('running ',params);
sendRandom(function(err,res){
if(err){
cb(new Error(err));
}else{
cb(null,res);
}
});
},
close: function(cb) {}
};
};
util.inherits(TestLib, EventEmitter);
module.exports = TestLib;
И я называю это так:
var cmd = require(__dirname+'/bin/testlib.js')();
cmd.on('message',function(msg){
log(msg);
});
cmd.init(function(err){
if(err){
log(err);
}else{
cmd.run(line,function(err,res){
if(err){
log(err);
}else{
log(res);
}
});
}
});
Я уверен, что я пропускаю что-то простое, но что?
Добавить 'EventEmitter.call (это)' в конструкторе 'TestLib'. – skypjack
'' '' var TestLib = function() {\t EventEmitter.call (this); '' '' ничего не меняет – xShirase
О, да, я только что видел, что вы фактически возвращаете другой объект из конструктора , – skypjack