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

ApolloServer/Express项目ts-node启动无堆栈仅返回exit code 1崩溃求助

排查步骤

第一步:优先捕获完整错误堆栈

当前无报错信息是排查的最大障碍,先通过以下方式拿到完整错误栈:

  • 替换启动命令输出全量错误:用node --trace-warnings -r ts-node/register src/app.ts替代原ts-node src/app.ts命令,会打印所有未捕获异常、警告的完整调用栈
  • 代码顶部加全局异常捕获逻辑:
// 放在src/app.ts最开始的位置
process.on('uncaughtException', (err) => {
  console.error('未捕获异常:', err.stack)
  process.exit(1)
})
process.on('unhandledRejection', (reason, promise) => {
  console.error('未处理Promise拒绝:', promise, '原因:', reason?.stack || reason)
})
  • 查看pm2运行日志:默认日志存放在~/.pm2/logs/目录下,对应进程的error日志会记录崩溃原因

第二步:结合异常特征定向排查

端口权限/占用问题

  • Debian系统默认禁止普通用户监听1024以下的低端口(如80、443),如果你的服务监听的是低端口,普通用户直接跑ts-node会直接崩溃,Windows无低端口监听限制、ts-node-dev/pm2可能有临时权限提升逻辑,完全符合你描述的差异特征,可以先将监听端口改为3000以上的高位端口测试。
  • 确认端口无其他进程占用:执行netstat -tulpn | grep 你的监听端口即可排查。

系统依赖兼容问题

  • 你使用的Node14版本要求glibc版本≥2.17,Debian9默认预装的glibc版本可能偏低,执行ldd --version即可核对版本,glibc版本不匹配会导致Node运行时偶发崩溃,完全符合pm2运行时偶尔能恢复的特征。
  • 跨系统依赖兼容问题:不要直接复制Windows环境的node_modules目录到Debian使用,删除node_modules和yarn.lock后重新执行yarn install安装Linux版本的二进制依赖包。

ts-node运行配置差异

  • ts-node-dev默认启用--files参数加载tsconfig.json的files/include配置,原生ts-node默认不启用该参数,你可以在启动命令中加参数测试:ts-node --files src/app.ts
  • 核对tsconfig.json的target配置,Node14对应的编译目标应为ES2020,配置错误会导致运行时语法兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:15:05