将EventEmitter迁移到ES6

Sim*_*n H 0 javascript ecmascript-6

我收到一个错误,getToken是未定义的,如下所示,并在与gulp-babel进行转换后.将构造函数移动到类的底部也没有帮助.任何人都可以建议吗?

我认为它与util继承有关,它可能试图将ES5代码应用到ES6完全不同的区域?

var events = require('events');
var util = require('util');
class Report {

    constructor(private_key, service_email, debug) {
        this.private_key = private_key;
        this.service_email = service_email;
        this.debug = debug || false;

        events.EventEmitter.call(this);

        this.getToken( (err, token) => {
            if (err) throw err;

            return this.emit('ready');
        });
    }

    getToken(cb) {
        ...
    }
}

util.inherits(Report, events.EventEmitter);

module.exports = Report;
Run Code Online (Sandbox Code Playgroud)

rob*_*lep 10

通过events.EventEmitter在构造函数中调用来判断,您可能还使用了以下内容:

require('util').inherits(Report, events.EventEmitter);
Run Code Online (Sandbox Code Playgroud)

这打破了Report班级(不知道为什么,但我可以重现这个问题).

相反,使用ES6样式的继承:

class Report extends events.EventEmitter {

  constructor(private_key, service_email, debug) {
    super();
    ...
  } 

  getToken(cb) { ... }
}
Run Code Online (Sandbox Code Playgroud)