asyncawait模块(节点)产生不可用的堆栈跟踪

我在使用node.js( https://github.com/yortus/asyncawait )的async / await实现时遇到问题。

在文档中说“将包括一个可用的堆栈跟踪” 。 但是对我来说并不是这样。 所以我觉得我做错了..但我不知道我做错了什么。

为了演示,我将比较“香草”bluebird示例的stacktrace与相应的asyncawait代码的相应堆栈跟踪(asyncawait在内部使用bluebird,所以我认为这是公平的)。

首先没有asyncawait的蓝鸟代码:

var funcB = function() { return Promise.resolve().then(function() { throw new Error("some err"); }) }; var funcA = function() { return funcB(); }; gulp.task("aa",function(cb) { funcA().then(function() { cb(); }); }); 

一开始,stacktrace产生信息“funcA – > funcB – > exception”。 没有更好的!

 Error: Error: some err at processImmediate [as _immediateCallback] (timers.js:358:17) From previous event: at funcB (C:\projects\JSBuildHelper\JSBuildHelper\tmp\tsreq\app\gulpfile.js:156:30) at funcA (C:\projects\JSBuildHelper\JSBuildHelper\tmp\tsreq\app\gulpfile.js:161:12) at Gulp.<anonymous> (C:\projects\JSBuildHelper\JSBuildHelper\tmp\tsreq\app\gulpfile.js:164:5) at module.exports (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\gulp\node_modules\orchestrator\lib\runTask.js:34:7) at Gulp.Orchestrator._runTask (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\gulp\node_modules\orchestrator\index.js:273:3) at Gulp.Orchestrator._runStep (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\gulp\node_modules\orchestrator\index.js:214:10) at Gulp.Orchestrator.start (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\gulp\node_modules\orchestrator\index.js:134:8) at C:\Users\alex\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:129:20 at process._tickCallback (node.js:355:11) at Function.Module.runMain (module.js:503:11) at startup (node.js:129:16) at node.js:814:3 

现在相应的asyncawait代码:

 var funcB = async(function() { throw new Error("some err"); }); var funcA = async(function () { await(funcB()); }); gulp.task("aa", function(cb) { funcA().then(function() { cb(); }); }); 

在堆栈跟踪中,我只能看到exception。 没有“funcA”,没有“funcB”。

对于这个简单的程序,这是足够的。 但是我不能用于其他更复杂的东西,考虑到实际上堆栈跟踪的重要性。

 Possibly unhandled Error: Error: some err at catchBlock (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\asyncawait\src\async\fiberManager.js:51:25) at runInFiber (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\asyncawait\src\async\fiberManager.js:29:9) From previous event: at new Promise (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\asyncawait\node_modules\bluebird\js\main\promise.js:84:37) at defer (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\asyncawait\src\async\defer.js:6:19) at nonIterable (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\asyncawait\src\async\makeAsyncFunc.js:86:28) at f0 (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\asyncawait\src\async\makeAsyncFunc.js:119:23) at Gulp.<anonymous> (C:\projects\JSBuildHelper\JSBuildHelper\tmp\tsreq\app\gulpfile.js:162:5) at module.exports (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\gulp\node_modules\orchestrator\lib\runTask.js:34:7) at Gulp.Orchestrator._runTask (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\gulp\node_modules\orchestrator\index.js:273:3) at Gulp.Orchestrator._runStep (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\gulp\node_modules\orchestrator\index.js:214:10) at Gulp.Orchestrator.start (C:\projects\JSBuildHelper\JSBuildHelper\node_modules\gulp\node_modules\orchestrator\index.js:134:8) at C:\Users\alex\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:129:20 at Function.Module.runMain (module.js:503:11) at startup (node.js:129:16) at node.js:814:3 

我做错了,还是这个限制,我不能删除?