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

NPM执行tsc构建始终返回退出码0,Yarn却能正确报错

排查方向
  • 检查npm版本:不同npm版本对脚本退出码的处理存在差异,尤其是npm 6及更早版本可能出现脚本报错但返回0的情况,建议升级到npm 7+稳定版本测试。
  • 验证tsc的退出码:直接在终端执行tsc命令,执行完后立刻输入echo $?查看返回值。如果手动执行tsc返回非0,但npm run build返回0,说明npm的脚本处理逻辑存在问题。
  • 排查package.json脚本语法:确认build脚本是否有隐藏特殊字符或语法异常,可临时将脚本改为"build": "tsc && echo 'build success'",若tsc报错后仍输出build success,说明npm未正确捕获tsc的错误退出码。
  • 检查npm配置:执行npm config get ignore-scripts,若值为true会影响脚本错误捕获;另外查看npm config get script-shell,确认使用的shell是否存在吞掉退出码的情况(比如Windows环境下的部分shell)。
  • 排查npm钩子脚本:查看项目是否有prebuild/postbuild这类钩子脚本,是否存在钩子脚本执行exit 0覆盖tsc退出码的情况,可临时移除所有钩子脚本测试。
  • 检查tsconfig.json配置:确认是否设置了noEmitOnError: false,虽然该选项默认不会影响退出码,但极端情况下可能导致异常,改为noEmitOnError: true重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:14:56