node.js - 无法实例化扩展 EventEmitter 的导出自定义模块 Nodejs 的实例

标签 node.js class instantiation extend eventemitter

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

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

在resource.js中创建Resource类并从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 中 我尝试实例化扩展自定义模块 Resource() (它又扩展了 EventEmitter 类),但出现错误: “‘资源’未定义”

请帮我找出哪里出错了。

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”实例化导入模块的新实例,并在 ext-emitter 内的未知/未定义上调用 new 。 js Resource() 对象。

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

只要留意变量名称即可。 更改第一行:

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

它会工作得很好。

关于node.js - 无法实例化扩展 EventEmitter 的导出自定义模块 Nodejs 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30685221/

相关文章:

node.js - 声明的数组返回未定义

Node .js : rendering error with vash

node.js - gcloud 错误 : ApiError: Not Found at new util. ApiError

对象数组的C++方法

c++ - 在 C++ 中构造对象的不同方法

javascript - Route.delete() 需要一个回调函数,但得到一个 [object Undefined]

jquery - 克隆 div 中输入 block 的 AJAX 更新

c# - ScriptManager.GetCurrent 方法背后的原因

Java:实例化还是继承?

python - 面向对象编程Python : Where to instantiate Cassandra and elasticsearch cluster?