当我在终端中按 ctrl+c 时,有没有办法打印当前 JS 行的堆栈跟踪? 使用选项 --trace-sigint

问题描述

我希望我的 javascript 在我强制关闭时打印堆栈跟踪,以便我知道一个函数挂在哪里。有没有办法做到这一点?我使用 Node 运行代码,特别是 npx ts-node code.ts。我想劫持 sigint 可能会起作用,但是 console.trace 将来自 sigint 块,而不是原始代码——我一直在这里取得进展。

解决方法

Node 运行时在 2020 年 5 月添加了 --trace-sigint 参数(为此目的,作为 nodejs/node#29207 的一部分。

当通过 npx 运行时,它的 --node-options 标志可用于将此选项传递给运行时,如下所示:

npx --node-options='--trace-sigint' ts-node code.ts
,

使用选项 --trace-sigint

documentation 简单地说明这“在 SIGINT 上打印堆栈跟踪。”

完成命令:

npx --node-options='-trace-sigint' ts-node code.ts