无法实例化扩展 EventEmitter 的导出自定义模块 Nodejs 的实例
can't instantiate instance of exported custom module Nodejs, that extends EventEmitter
社区。
我无法实例化导出的自定义模块 Nodejs 的实例。
我有 2 个文件:一个自定义测试模块 "resource.js" 和 "ext-emitter.js"
在 resource.js 中创建 class 资源并从 EventEmitter class 扩展它。
// 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中导入上面的模块
我尝试实例化扩展自定义模块 Resource()(它又扩展了 EventEmitter class),但出现错误:
“'Resource' 未定义”
请帮我找出我哪里出错了。
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" 并将其放入变量 "r",然后您使用相同的变量 "r" 实例化导入模块的新实例并在 [=22= 上调用 new ] 在 ext-emitter.js Resource() 对象中。
var r = require("./resource");
var r = new Resource(7);
只需关注 var 名称即可。
更改第一行:
var Resource = require("./resource");
它会工作得很好。
社区。 我无法实例化导出的自定义模块 Nodejs 的实例。
我有 2 个文件:一个自定义测试模块 "resource.js" 和 "ext-emitter.js"
在 resource.js 中创建 class 资源并从 EventEmitter class 扩展它。
// 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中导入上面的模块 我尝试实例化扩展自定义模块 Resource()(它又扩展了 EventEmitter class),但出现错误: “'Resource' 未定义”
请帮我找出我哪里出错了。
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" 并将其放入变量 "r",然后您使用相同的变量 "r" 实例化导入模块的新实例并在 [=22= 上调用 new ] 在 ext-emitter.js Resource() 对象中。
var r = require("./resource");
var r = new Resource(7);
只需关注 var 名称即可。 更改第一行:
var Resource = require("./resource");
它会工作得很好。