不能实例化导出的自定义模块Nodejs的实例,它扩展了EventEmitter

社区。 我不能实例化导出的自定义模块Nodejs的实例。

我有2个文件:一个自定义testing模块“resource.js”和“ext-emitter.js”

在resource.js中创buildResource类,并从EventEmitter类扩展它。

// resource.js var util = require("util"); var eventEmitterInstance = require("events").EventEmitter; function Resource(m){ this.maxEvents = m; var self = this; process.nextTick(function() { var count = 0; self.emit('start'); var t = setInterval(function(){ self.emit('data', ++count); if (count === m) { self.emit('end', count); clearInterval(t); } }, 10); }); } util.inherits(Resource, eventEmitterInstance); module.exports = Resource(); 

然后我导入上面的模块在下一个文件ext-emitter.js我尝试实例化扩展自定义模块资源()(它依次扩展EventEmitter类),但我得到一个错误:“资源”未定义“

请帮我find我出错的地方。

 var r = require("./resource"); var r = new Resource(7); r.on('start', function(){ console.log("I've started the resource getting process!!!"); }); r.on('data', function(d) { console.log("I received this data --> " + d ); }); r.on('end', function(finalCountOfRes){ console.log("I have finished resource getting. The num of res gotten: " + finalCountOfRes); }); 

我认为你出错的地方是文件“ext-emitter.js”中的第一行,只需要更小心,你可以自己发现错误:在这里你需要你的自定义模块“resource.js”并把它放到一个variables“r”,那么你正在使用相同的variables“r”实例化导入模块的新实例,并在ext-emitter.js Resource()对象中调用new未知/未定义。

 var r = require("./resource"); var r = new Resource(7); 

只要留意你的名字。 更改第一行:

 var Resource = require("./resource"); 

它会工作得很好。

Interesting Posts