如何正确在Vercel部署MERN应用?服务器启动失败求助
解决Vercel部署MERN应用后端无法启动的问题
1. 修复路径大小写错误
你的vercel.json里写的/Backend/server.js是大写开头,但实际目录是小写的backend,Vercel对文件路径大小写敏感,这会导致无法找到后端入口文件,先修正这个路径。
2. 调整Vercel配置适配MERN结构
仅靠重写规则不足以让Vercel正确识别后端服务,需要补充构建命令、输出目录以及Serverless函数配置,以下是正确的vercel.json配置:
{ "buildCommand": "cd client && npm install && npm run build", "outputDirectory": "client/build", "functions": { "backend/server.js": { "runtime": "@vercel/node@20" } }, "rewrites": [ { "source": "/api/(.*)", "destination": "/backend/server.js/api/$1" } ] }
3. 后端代码的关键检查项
- 端口不要硬编码,改用Vercel提供的环境变量:
const PORT = process.env.PORT || 5000; app.listen(PORT, () => console.log(`Server running on port ${PORT}`)); - 确保API路由前缀是
/api,比如:const notesRoutes = require('./routes/notes'); app.use('/api', notesRoutes); - 敏感信息(如MongoDB URI)要在Vercel项目的「Settings > Environment Variables」里配置,代码里用
process.env.MONGO_URI调用。
4. 部署验证
部署时Vercel会先执行构建命令打包React客户端,同时将backend/server.js作为Serverless函数部署,所有/api开头的请求会转发到后端处理。
内容的提问来源于stack exchange,提问作者Koushik
相关产品推荐
相关产品推荐

