子文件夹存放代码时如何将Node.js应用部署到Heroku平台
可行的部署方案
方案1:配置Heroku项目路径(推荐,无需修改项目结构)
这是目前Heroku Node.js buildpack原生支持的方案,操作最简单:
- 确保你提交到Git的根目录为
myProject,包含完整的client、server文件夹 - 运行Heroku CLI命令设置环境变量:
heroku config:set PROJECT_PATH=server -a 你的Heroku应用名称 - 正常提交代码推送Heroku即可,build过程会自动识别
server目录下的package.json执行依赖安装、构建和启动逻辑
方案2:新增根目录代理package.json
如果方案1不匹配你的项目配置,可以用代理脚本的方式兼容:
- 在
myProject根目录新建package.json,参考内容如下:
{ "name": "root-deploy-proxy", "version": "1.0.0", "engines": { "node": "填写和server目录下package.json一致的Node.js版本号" }, "scripts": { "install": "cd server && npm install && cd ../client && npm install", "build": "cd client && npm run build", "start": "cd server && npm start" } }
- 如果你需要将Next.js构建产物托管到Node服务下,可在
build脚本末尾添加移动产物的命令,例如&& mv .next ../server/static,根据你自己的服务静态目录配置调整即可 - 把新增的根目录
package.json提交到Git后正常推送Heroku即可
可选方案:前后端分离部署
如果不需要前后端部署在同一个实例下,也可以将Next.js应用直接部署到Vercel,Node服务单独部署到Heroku,无需调整现有目录结构。
注意事项
- 所有目录下的
node_modules都需要添加到.gitignore中,不要提交到代码仓库 - 如果你使用
yarn/pnpm作为包管理器,把上述脚本中的npm替换为对应的包管理器命令即可
内容的提问来源于stack exchange,提问作者sairaj
相关产品推荐
相关产品推荐

