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

ni65a41a  于 2023-05-06  发布在  Node.js
关注(0)|答案(1)|浏览(149)

基本上,I have the same question as this,但用于节点16+。答案的最下面写着:
在Node 14+上,您可以使用--async-stack-traces标志在处理异步代码时改进堆栈跟踪。有一些限制,比如只能使用async/await,而不能使用promise。
您可以在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这整个时间。它与此标志无关(默认情况下为启用状态)。我想这个信息足以作为答案。

lkaoscv7

lkaoscv71#

你可以在我上面的更新中找到这个问题的答案,但总结一下:
1.此标志仍然存在,但列出它的唯一方法是运行node --v8-options
1.默认情况下,此标志处于启用状态。
1.我的症状是一个testcafe bug,它 * 巧合地 * 与异步堆栈跟踪关闭时您会看到的情况相匹配。

相关问题