【问题标题】:Is it possible to get stack traces across async/await boundaries using --harmony_async_await in Node 7?是否可以在 Node 7 中使用 --harmony_async_await 跨异步/等待边界获取堆栈跟踪?
【发布时间】:2017-04-01 22:30:24
【问题描述】:

我们正在尝试在 Node 7 中使用 --harmony_async_await,与使用 babel 进行异步/等待进行编译相比,我们缺少长堆栈跟踪的能力 (http://bluebirdjs.com/docs/api/promise.longstacktraces.html)。

显然,如果有一个“只看这个”选项会很棒 - 在 chrome(ium) 方面,他们似乎在检查器中支持它,尽管最新的工作是在 v8.5.4 之后(即不在节点 7 中):

https://bugs.chromium.org/p/v8/issues/detail?id=4483

https://codereview.chromium.org/2357423002/

另一种方法是让 v8 使用 bluebird 的 promise 实现 - 但我该怎么做呢?覆盖 global. Promise 不会改变 async/await 的行为方式(它们仍然使用默认的 Promise)。

【问题讨论】:

  • 有趣的是,Emanuel Jöbstl 建议替换您提到的内置承诺实现确实有效! medium.com/front-end-weekly/….
  • 将 promise 实现替换为 bluebird 并启用完整的堆栈跟踪会导致 4 到 5 倍的高性能命中 (github.com/nodejs/node/issues/11865#issuecomment-325035479)
  • 但是node 12终于提供了原生支持——docs.google.com/document/d/…
  • @kresho 感谢您让我(和其他所有人)知道!也许自从我搞砸之后发生了一些变化,或者我只是犯了一个错误。自从提出这个问题以来,Node/v8 无疑已经取得了长足的进步。
  • 问题来自 2016 年 :)

标签: javascript node.js async-await v8 bluebird


【解决方案1】:

由于默认启用 NodeJS v12 异步堆栈跟踪。

【讨论】:

    猜你喜欢
    • 2019-11-05
    • 2013-03-02
    • 2014-03-30
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2011-06-01
    相关资源
    最近更新 更多