You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js脚本内部启用未捕获异常追踪功能?

在Node.js脚本内部启用未捕获异常追踪的方法

首先明确:没有node.trace_uncaught = true这种直接写法,但可以通过两种方式在脚本内部实现类似--trace-uncaught的效果:

1. 监听uncaughtException事件手动打印调用栈

当Node.js遇到未捕获异常时,会触发process对象的uncaughtException事件。你可以监听这个事件,手动打印异常的完整调用栈,同时保持默认的退出行为:

process.on('uncaughtException', (err) => {
  console.error('未捕获异常追踪信息:\n', err.stack);
  process.exit(1); // 手动退出进程,和原生参数的默认行为一致
});

这种方式完全模拟了--trace-uncaught的核心效果,且对当前进程直接生效。需要注意:如果不手动调用process.exit(1),Node.js不会自动退出(这是监听uncaughtException事件后的行为变化),加上这句才能保持和原生参数一致的流程。

2. 修改process.execArgv影响子进程

如果需要让当前脚本启动的子进程启用--trace-uncaught,可以在脚本开头修改process.execArgv数组,添加对应的参数:

process.execArgv.push('--trace-uncaught');

但这种方法对当前进程无效,仅对后续通过child_process.fork()或child_process.spawn()启动的子进程生效——因为execArgv是Node.js启动时传递的参数集合,当前进程的参数在启动阶段已初始化完成,无法动态修改。

补充说明

Node.js的很多命令行参数(包括--trace-uncaught)是在进程启动阶段初始化配置的,并没有暴露对应的运行时API来动态修改,所以不存在直接通过设置全局属性启用该功能的方式。

内容的提问来源于stack exchange,提问作者Sir Nonchalant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:35:30