我收到一个错误,如下所述以及使用gulp-babel进行编译后,getToken未定义。将构造函数移到类的底部也无济于事。有人可以建议吗?
我认为这与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;
最佳答案
从构造函数中对events.EventEmitter
的调用判断,您可能还使用以下代码:
require('util').inherits(Report, events.EventEmitter);
这打破了
Report
类(不确定原因,但是我可以重现该问题)。相反,请使用ES6样式的继承:
class Report extends events.EventEmitter {
constructor(private_key, service_email, debug) {
super();
...
}
getToken(cb) { ... }
}
关于javascript - 将EventEmitter迁移到ES6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31170407/