--async-stack-traces 在 Node 16+ 中发生了什么,是否有新的替代方案?

4

基本上,我有与此相同的问题,但是针对Node 16+。那个答案的底部说:

在Node 14+上,您可以使用--async-stack-traces标志,在处理异步代码时获得改进的堆栈跟踪。有一些限制,例如仅适用于async/await而不是promises。

您可以在https://v8.dev/blog/fast-async中了解更多信息。

我正在使用v16.13.2,当我键入node -h | grep async时,我看不到关于此标志的任何内容。然而,我的堆栈跟踪仅限于像提问者一样的同步堆栈。我理解原因,但我想知道是否有办法获得更好的故障排除信息。

--async-stack-traces的概念被取消了吗?它被替换成其他东西了吗?在Node 16+中是否有任何方法可以查看异步堆栈跟踪?如果有,如何操作?


更新:我在GitHub问题中找到了一个有用的评论: node --v8-options | grep async所以我想这个标志在16中确实存在,但我不知道如何打开它,特别是当我的package.json充满了脚本时,其中没有使用node直接(Jasmine、Testcafe、Typescript、ts-node)。


更新:在找到此评论后,我更加困惑了。

该标志在 V8 中默认启用。您不需要传递它。

这里有证明:https://github.com/nodejs/node/blob/5fad0b93667ffc6e4def52996b9529ac99b26319/deps/v8/src/flags/flag-definitions.h#L1730

对我来说似乎不是这样... 它一定和我正在使用的库有关。


更新: 原来我一直在经历一个 Test Café bug。这与这个标志(默认打开)无关。我认为这些信息已经足够作为答案了。

1个回答

3
您可以在我的更新中找到这个问题的答案,但是总结一下:
  1. 该标志仍然存在,但列出它的唯一方法是运行node --v8-options
  2. 此标志默认开启。
  3. 我的症状是testcafe bug,恰好与关闭异步堆栈跟踪时看到的情况相匹配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接