10

babel プラグインを使用して async/await でコードをデバッグしようとすると、むらのあるデバッグ経験がtransform-async-to-generatorあります (他のほとんどすべての組み合わせを試しましたが)。

基本的に、await を含むコードはメソッドの最後までスキップしてから、コンパイルされたコードに入ります。ビデオ

export class Cat {
    async meow(){
        let p = await this.bat(); // <<<< this line runs
        this.fart(); // <<<< then skips this line
        return p;  // <<<< and goes to this line ( always last line in fn )
    }
}

その関数に対して生成されたコードを見ると、次のようになります。

meow() {
    var _this = this;

    return _asyncToGenerator(function* () {
        let p = yield _this.bat();
        _this.fart();
        return p;
    })();
}

結果に関しては不思議ではありませんが、ソースマップはこれを処理する必要がありますよね?

私はこれをさまざまなセットアップ(フック/バベルノード/バベルクリ/ガルプバベルが必要)で試してみましたが、同じ問題が発生しました。私が使用している: Node 5.3.0 と Babel 6.3

githubでデモ プロジェクトを作成しました。また、バベル スレッドに質問を投稿しました。

編集: これはバベルの問題ではないと思うので、質問はsource-mapsプロジェクトに提起されました。チームは、この問題をデバッガの問題として認識しました。詳細については、次を参照してください: github の問題

4

1 に答える 1