[Bug] pnpm run build 在 Node < 24.2 上静默退出(退出码 0),不生成任何构建产物 #5082
Math-Still
started this conversation in
General
Replies: 1 comment
可复现的排查路径这个现象符合 Node 24.1.x 与 建议先在同一 checkout/profile 下记录 我整理了一份独立的社区手册 runbook,专门覆盖这个“Node 24 + tsx 静默构建、退出 0、无产物、随后 Web 返回 404”的证据链、恢复步骤和回滚边界:Recover a silent Node 24 and tsx source build。它不是 DeepSeek 官方文档;最终应以本讨论所对应的上游 revision 和实际构建输出为准。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
描述 Bug
pnpm run build 只打印一行 $ tsx scripts/build.ts 就退出,退出码为 0,没有任何构建输出,也不生成任何产物。结果 pnpm dsh web 虽然能启动服务器,但浏览器在认证通过后访问 / 返回 404——因为 apps/web/dist 根本没有被构建出来。
复现步骤
根因分析
scripts/build.ts 用 if (import.meta.main) main() 作为入口判断。import.meta.main 从 Node 24.2.0 才可用(并回溯移植到 22.19.0);在 Node 24.0.x / 24.1.0 上它的值是 undefined——在 tsx v4.22.4 下同样如此。于是 main() 永远不会被调用,进程以退出码 0 静默结束。同样的写法还出现在
scripts/run-gates.ts、scripts/verify-doc-site-fragments.ts、scripts/verify-cordis-config.ts、scripts/verify-runtime-closure.ts。
预期行为
pnpm run build 应完整执行 build:lib + build:web 并写入客户端构建记录;至少在无法构建时应该报错退出,而不是静默返回 0。
环境信息
建议修复
engines 字段声明的是 node ^22.19.0 || >=24.0.0,但 >=24.0.0 包含了 24.0.x / 24.1.0,而这两个版本没有 import.meta.main。建议二选一:
All reactions