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

Javascript AsyncWait模块(节点)产生不可用的堆栈跟踪,javascript,node.js,async-await,stack-trace,bluebird,Javascript,Node.js,Async Await,Stack Trace,Bluebird,我在使用node.js()的异步/等待实现时遇到问题 文档中说,“将包括一个可用的堆栈跟踪”。但对我来说,情况并非如此。所以我认为我做错了……但我不知道我做错了什么 为了演示,我将比较“香草”蓝鸟示例的stacktrace与相应asyncawait代码的相应stacktrace(asyncawait在内部使用蓝鸟,因此我认为这是公平的) 首先是不带AsyncWait的bluebird代码: var funcB = function() { return Promise.resolve().t

我在使用node.js()的异步/等待实现时遇到问题

文档中说,“将包括一个可用的堆栈跟踪”。但对我来说,情况并非如此。所以我认为我做错了……但我不知道我做错了什么

为了演示,我将比较“香草”蓝鸟示例的stacktrace与相应asyncawait代码的相应stacktrace(asyncawait在内部使用蓝鸟,因此我认为这是公平的)

首先是不带AsyncWait的bluebird代码:

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
在stacktrace中,我只看到异常。没有“funcA”,没有“funcB”

对于这个简单的程序,这就足够了。但考虑到stacktraces的重要性,我不能将它用于其他更复杂的东西

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
可能未处理的错误:错误:某些错误
在catchBlock(C:\projects\JSBuildHelper\JSBuildHelper\node\u modules\asyncwait\src\async\fiberManager.js:51:25)
在runInFiber(C:\projects\JSBuildHelper\JSBuildHelper\node\u modules\asyncwait\src\async\fiberManager.js:29:9)
从以前的事件:
在新承诺(C:\projects\JSBuildHelper\JSBuildHelper\node\u modules\asyncwait\node\u modules\bluebird\js\main\Promise.js:84:37)
延迟时(C:\projects\JSBuildHelper\JSBuildHelper\node\u modules\asyncwait\src\async\defer.js:6:19)
不可编辑(C:\projects\JSBuildHelper\JSBuildHelper\node\u modules\asyncwait\src\async\makeAsyncFunc.js:86:28)
在f0(C:\projects\JSBuildHelper\JSBuildHelper\node\u modules\asyncwait\src\async\makeAsyncFunc.js:119:23)
狼吞虎咽。(C:\projects\JSBuildHelper\JSBuildHelper\tmp\tsreq\app\gulpfile.js:162:5)
在module.exports(C:\projects\JSBuildHelper\JSBuildHelper\node\u modules\gulp\node\u modules\orchestrator\lib\runTask.js:34:7)
位于Gulp.Orchestrator.\u runTask(C:\projects\JSBuildHelper\JSBuildHelper\node\modules\Gulp\node\modules\Orchestrator\index.js:273:3)
位于Gulp.Orchestrator.\u runStep(C:\projects\JSBuildHelper\JSBuildHelper\node\modules\Gulp\node\modules\Orchestrator\index.js:214:10)
在Gulp.Orchestrator.start(C:\projects\JSBuildHelper\JSBuildHelper\node\u modules\Gulp\node\u modules\Orchestrator\index.js:134:8)
在C:\Users\alex\AppData\Roaming\npm\node\u modules\gulp\bin\gulp.js:129:20
位于Function.Module.runMain(Module.js:503:11)
启动时(node.js:129:16)
在node.js:814:3

我做错了吗?或者这真的是我无法消除的限制吗?

在任何符合承诺的上下文中,您都不应该获得
funcA/B
<代码>。然后异步执行,因此初始函数永远不会在堆栈中。除非扩展自己的日志记录(打印一些与上下文相关的信息),否则无法真正匹配实际启动异步操作的调用。但是,为什么在第一种情况下打印funcA/B?正如您所提到的,这两种情况都涉及符合承诺的contextes。
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