Build failed 不是原因,只是最后结果
开发运行和生产构建不一样
text
dev 为了快速开发,边改边刷新
build 完整检查并生成可发布文件
deploy 把构建结果放到线上所以 localhost 正常,不保证 build 成功;build 成功,也不保证线上运行时环境变量齐全。
先确认平台执行了什么命令
日志开头可能显示:
text
Running: pnpm install
Running: pnpm build如果项目实际使用 npm、命令是 npm run build,平台却执行 pnpm,先修构建配置,不要改 React。
把日志分成四个阶段
安装依赖
text
npm install
pnpm install
pip install -r requirements.txt错误常与锁文件、版本、网络和依赖冲突有关。
编译和类型检查
text
Type error
SyntaxError
Cannot find module通常带文件和行号。
生成产物
框架渲染页面、打包资源、输出 dist 等目录。
发布或启动
上传产物、启动服务、健康检查。这里失败可能是端口、启动命令或运行环境变量。
一条日志逐词读
text
src/App.tsx:58:7
Type error: Property 'name' does not exist on type 'Project'.text
src/App.tsx 文件
58 行
7 列
Type error 类型检查发现矛盾
name 代码正在读取的字段
Project TypeScript 认为当前对象应该符合的类型先打开第 58 行,查看变量实际类型和数据返回,不要立刻给 Project 随便加一个 name。
为什么先修第一条具体错误
text
Cannot find module './MessageCard'
Property 'message' does not exist
Failed to render page
Build failed第一个模块缺失可能引起后面全部连锁失败。最后一句只是总结。
常见“本地正常,线上失败”
文件名大小写
text
import MessageCard from './messageCard'
真实文件 MessageCard.tsx某些本地文件系统可能宽松,Linux 构建严格区分大小写。
Node 或 Python 版本不同
本地使用新版本语法,平台运行旧版本。查看 package.json engines、.nvmrc、runtime 配置或平台设置。
环境变量缺失
本地 .env 有 DATABASE_URL,线上没有。构建或启动时会失败。
锁文件和包管理器不一致
项目有 pnpm-lock.yaml,平台却运行 npm。依赖结果可能不同。
构建输出目录错误
Vite 常见 dist,VitePress 默认 .vitepress/dist。平台发布了错误文件夹,就可能出现空站点或 404。
依赖只装在电脑全局
本地能找到命令,平台干净环境找不到。项目必须在 package.json 或对应清单声明依赖。
用本地构建复现
先查看 package.json scripts,再运行项目对应命令:
bash
pnpm build如果本地也失败,优先在本地修,反馈更快。
如果本地成功、线上失败,比较:
text
包管理器和锁文件
Node / Python 版本
构建命令
环境变量
工作目录
输出目录
操作系统大小写交给 AI 的构建排错材料
text
部署平台:
构建命令:
输出目录:
包管理器和锁文件:
本地 build 是否成功:
日志第一条具体错误:
错误前后 15 行:
相关文件和行号:不要只发日志最后一句 Command exited with code 1。
修完怎样验收
text
本地 build 成功
部署平台 install 成功
部署平台 build 成功
发布阶段成功
公开网址返回新版本
关键功能真实操作成功本地 npm run dev 正常,是否证明线上构建一定能通过?
答案:不能。dev 可能跳过完整类型检查或使用不同环境;还要运行生产 build,并比较线上包管理器、版本、变量和输出目录。