簡體   English   中英

將EventEmitter遷移到ES6

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM