NodeJS 5.x + Babel 6 async/await 调试
NodeJS 5.x + Babel 6 async/await debugging
当我尝试使用 transform-async-to-generator
babel 插件调试 async/await 代码时,我遇到了不稳定的调试体验(尽管我几乎尝试了所有其他组合)。
本质上,带有 await 的代码会跳到方法的末尾,然后进入编译代码。 video
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;
})();
}
关于结果不足为奇,但 source maps 应该处理这个,对吧?
我尝试过各种设置(需要 hook / babel-node / babel cli / gulp babel)并遇到同样的问题。我正在使用:Node 5.3.0 和 Babel 6.3
我在 github. I've also posted the question on the babel thread 上创建了一个演示项目。
编辑:
这个问题是针对 source-maps 项目提出的,因为我不认为这是一个 babel 问题。该团队承认该问题是调试器问题。有关详细信息,请参阅:github issue
随着 Node 4+ 原生引入 async/await
,这不再是问题。
当我尝试使用 transform-async-to-generator
babel 插件调试 async/await 代码时,我遇到了不稳定的调试体验(尽管我几乎尝试了所有其他组合)。
本质上,带有 await 的代码会跳到方法的末尾,然后进入编译代码。 video
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;
})();
}
关于结果不足为奇,但 source maps 应该处理这个,对吧?
我尝试过各种设置(需要 hook / babel-node / babel cli / gulp babel)并遇到同样的问题。我正在使用:Node 5.3.0 和 Babel 6.3
我在 github. I've also posted the question on the babel thread 上创建了一个演示项目。
编辑: 这个问题是针对 source-maps 项目提出的,因为我不认为这是一个 babel 问题。该团队承认该问题是调试器问题。有关详细信息,请参阅:github issue
随着 Node 4+ 原生引入 async/await
,这不再是问题。