在Vercel托管MERN Stack项目:同项目或同仓库分项目实现方案?
关于MERN项目在Vercel托管的两种可行方案
方案一:通过vercel.json在同一个Vercel项目中同时托管前后端
完全可行,核心是通过vercel.json配置路由规则,区分前端静态资源请求和后端API请求,分别指向对应目录。
具体配置步骤:
- 在项目根目录创建
vercel.json文件 - 写入适配你项目结构的配置示例(可根据实际目录调整):
{ "buildCommand": "cd client && npm install && npm run build && cd ../server && npm install", "outputDirectory": "client/build", "routes": [ { "src": "/api/(.*)", "dest": "/server/api/$1" }, { "src": "/(.*)", "dest": "/client/build/$1" } ], "functions": { "server/api/*.js": { "runtime": "@vercel/node@2.x" } } }
- 关键注意点:
- 确保前端项目的build命令能生成静态文件到
client/build目录 - 后端API文件需符合Vercel Node函数规范,比如导出
handler处理函数 - 路由规则要匹配你的实际API路径前缀
- 确保前端项目的build命令能生成静态文件到
方案二:同一个GitHub仓库下创建两个独立Vercel项目分别托管前后端
这也是可行方案,适合前后端依赖完全分离、需要独立部署迭代的场景。
具体操作步骤:
- 登录Vercel控制台,点击「New Project」
- 选择你的目标GitHub仓库,进入项目配置页
- 配置前端项目:
- 在「Root Directory」输入框填写
client - 设置Build Command为
npm run build - Output Directory根据前端框架填写(比如React默认是
build) - 完成部署,获取前端专属Vercel域名
- 在「Root Directory」输入框填写
- 再次点击「New Project」,重新选择同一个GitHub仓库
- 配置后端项目:
- 在「Root Directory」输入框填写
server - Vercel会自动识别Node.js服务,确保后端入口文件导出正确的HTTP服务
- 完成部署,获取后端专属Vercel域名
- 在「Root Directory」输入框填写
- 最后修改前端代码中的API请求地址,替换为后端的Vercel域名即可
内容的提问来源于stack exchange,提问作者Sanchit Bajaj
相关产品推荐
相关产品推荐

