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 の問題