当我在终端中按 ctrl+c 时,有没有办法打印当前 JS 行的堆栈跟踪?

is there a way to print the stacktrace of the current JS line when I ctrl+c in terminal?

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

使用选项 --trace-sigint

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

完成命令:

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

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

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

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