MERN栈项目部署Vercel构建失败,@zeit/ncc模块加载报错
报错解决步骤
该报错为Vercel构建器识别单仓库MERN项目结构异常导致的依赖路径解析错误,可按以下顺序排查修复:
- 优先修正
vercel.json配置,这是该场景下最常见的错误诱因,参考配置如下:
{ "builds": [ { "src": "client/package.json", "use": "@vercel/static-build", "config": { "distDir": "build" } }, { "src": "server/server.js", "use": "@vercel/node" } ], "routes": [ { "src": "/api/(.*)", "dest": "server/server.js" }, { "src": "/(.*)", "dest": "client/$1" } ], "installCommand": "npm install && cd client && npm install && cd ../server && npm install" }
- 清理项目内冗余依赖:
@vercel/ncc、@zeit/ncc属于Vercel构建工具的内部依赖,无需手动安装到项目中,否则会和构建环境的内置版本产生冲突。将这两个依赖从根目录、client、server三个路径下的package.json中全部移除,同时删除三个路径下的node_modules文件夹和package-lock.json/yarn.lock锁文件,本地重新安装依赖验证项目可正常运行后再提交部署。 - 核对Vercel控制台项目构建配置:
- 项目根目录保持默认,不要手动指定为client或server目录
- 构建命令填写
cd client && npm run build - 输出目录填写
client/build
- 匹配Node.js版本:在根目录
package.json中添加以下配置,将部署环境的Node.js版本和你本地开发使用的版本保持一致,避免版本兼容问题:
"engines": { "node": "替换为你本地的Node.js版本,例如18.x" }
- 额外注意事项:后端代码中的MongoDB连接地址需要替换为MongoDB Atlas的公网连接串,同时在Atlas控制台的网络访问设置中放开0.0.0.0/0的访问权限,避免部署完成后接口无法连接数据库。
内容的提问来源于stack exchange,提问作者Maiko vd Veen
相关产品推荐
相关产品推荐

