[英]Migrating EventEmitter to ES6
我收到一個錯誤,如下所述以及使用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) { ... }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.