AI Tools Guide

Vercel 部署失败怎么办?8 个常见 build 报错原因和修复

Vercel 部署失败先看 build 日志再动手:Command exited with 1、Module not found、环境变量缺失、Output Directory 配错、Node 版本不符、构建超时、部署后 404、FUNCTION_INVOCATION_FAILED——8 个最常见 Vercel build 报错的真实原因和修复,附 Codex 辅助排查。

VercelVercel 部署失败build failedNext.js环境变量报错排查Codex

Published: 2026-06-01 / Updated: 2026-06-25

本地 npm run build 能过、推上去 Vercel 却 build 失败,是新手最常踩的坑。原因几乎都写在 Vercel 的 Build Logs 里——别急着重试或改配置,先去 Deployment 页打开完整构建日志,看红色那几行。

下面是 8 个最常见的 Vercel 部署报错、真实成因和修复,最后讲怎么让 Codex 辅助读日志。

第一步:去哪看真正的报错

Vercel 仪表板 → 失败的 Deployment → Build Logs。报错关键句通常是这几类,对号入座往下看:

  • Command "npm run build" exited with 1 → 构建命令本身失败(见 ①)
  • Module not found / Can't resolve → 找不到模块(见 ②)
  • Environment Variable ... references Secret which does not exist / 运行时 undefined → 环境变量(见 ③)
  • No Output Directory named "public"/"dist" found → 输出目录配错(见 ④)
  • Found invalid Node.js Version / engine → Node 版本(见 ⑤)
  • Error: The build exceeded the maximum allowed runtime → 构建超时(见 ⑥)
  • 部署成功但访问 404: NOT_FOUND → 路由/输出(见 ⑦)
  • 500 / FUNCTION_INVOCATION_FAILED → 运行时函数报错(见 ⑧)

① Command "npm run build" exited with 1(构建命令失败)

成因:本地有缓存或没开严格校验,线上干净环境把警告当错误(最常见是 TypeScript 类型错、ESLint 错、缺依赖)。

修复:用干净环境本地复现,别信增量缓存:

rm -rf node_modules .next && npm ci && npm run build

本地复现出同样的红字,按那条错误改;线上和本地 Node 版本要一致(见 ⑤)。

② Module not found / Can't resolve(找不到模块)

成因:两个高频原因——(a) 大小写:本地 macOS/Windows 不区分大小写,Vercel 的 Linux 区分,import './Header' 实际文件叫 header.tsx 就会挂;(b) 依赖装到了 devDependencies,生产构建装不到。

修复:核对 import 路径大小写和真实文件名完全一致;构建需要的包放进 dependencies

npm install <包名> --save        # 进 dependencies,不是 --save-dev

③ 环境变量缺失(references Secret / undefined)

成因:本地 .env 有的变量,Vercel 项目里没配;或前端要用的变量没加 NEXT_PUBLIC_ 前缀。

修复:Vercel → Settings → Environment Variables 补齐,勾对 Production 环境,然后重新部署(加完变量不会自动生效,必须 redeploy)。前端可读的变量必须以 NEXT_PUBLIC_ 开头。

④ No Output Directory named "public"/"dist" found(输出目录配错)

成因:Vercel 的 Framework Preset 或 Output Directory 和你项目实际产物目录对不上(Vite 是 dist,CRA 是 build,Next.js 自动识别)。

修复:Settings → Build & Development Settings,把 Framework Preset 选对,或手动把 Output Directory 改成项目真实的产物目录。

⑤ Found invalid Node.js Version(Node 版本不符)

成因:项目 package.jsonengines.node 或依赖要求的 Node 版本,和 Vercel 默认版本不一致。

修复:在 Settings → Node.js Version 选和本地一致的 LTS 版本;或在 package.json 写明:

"engines": { "node": "20.x" }

⑥ The build exceeded the maximum allowed runtime(构建超时)

成因:依赖过多、生成页面过多(比如几千个静态页)、或构建脚本里有死循环、超大数据处理。

修复:减少构建期的重活;把超大数据生成挪到运行时或增量生成;精简页面数量(页太多本身也拖累收录)。

⑦ 部署成功但 404: NOT_FOUND(访问页面 404)

成因:构建过了但路由对不上——basePath 配错、SPA 没配 rewrites、或输出目录里根本没有那个页面。

修复:Next.js 确认页面文件在正确的 app/pages/ 路径;纯前端 SPA 在 vercel.json 加 rewrites 把所有路由指向 index.html

⑧ 500 / FUNCTION_INVOCATION_FAILED(运行时函数报错)

成因:构建成功,但 serverless 函数运行时崩了——常见是运行时读不到环境变量、用了 Node 不支持的 API、或没处理异步异常。

修复:去 Vercel → 该 Deployment → Runtime Logs(不是 Build Logs)看运行时报错;按那条 stack trace 修,重点查 ③ 环境变量和未捕获的 async 异常。

让 Codex 辅助读部署日志

完整 Build/Runtime 日志贴给 Codex,让它定位而不是盲改:

这是我的 Vercel 部署日志:[贴完整日志]
请判断是 build 阶段还是 runtime 阶段失败、指出关键报错行和最可能原因,
先给只读的验证步骤,不要直接改我的 vercel.json 或环境变量。

可以复制的诊断记录

Vercel 部署失败诊断记录
失败阶段(Build / Runtime):
关键报错行:
本地 npm ci && npm run build 是否复现:
本地 Node 版本 / Vercel Node 版本:
缺失的环境变量:
Framework Preset / Output Directory:
下一步:

风险提醒

  • 别把含密钥的 .env 提交进仓库;环境变量在 Vercel 后台配,别写进代码。
  • 客户项目的生产部署、域名、环境变量改动,先确认授权再动。

相关工具

相关报错排查

同一套排查思路的常见报错,建议一起看:

免责声明

本文中的报错信息与修复对应 Vercel 官方部署行为,供学习和排查参考;具体项目涉及客户域名、环境变量、生产部署时,需明确授权并人工复核。

读完后可以直接用的工具

根据这篇文章的主题自动匹配,先用工具做判断,再人工复核交付。

查看全部工具

SEO path

Continue through the same topic network

Open the Codex cluster hub

Related articles

需要人工协助配置或排错?

你可以先用本站工具和模板自助排查。若确实卡在 Codex、Claude Code、GitHub、Vercel 配置或客户需求判断上,可以通过联系页咨询。服务不是主业入口,只作为少量高价值人工协助保留。

联系我