You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何安全调整目录结构解决Heroku推送找不到package.json问题

问题原因

Heroku Node.js buildpack默认只会检测推送代码根目录下的package.json,你当前Git仓库根目录(最外层Recipes/文件夹)没有这个文件,两个package.json分别在recipes/backend/node_postgres/(后端)和recipes/frontend/(前端)子目录里,所以buildpack不会触发,构建直接失败。

方案1:不改任何目录结构(零风险,推荐优先用)

完全不用动现有文件,不会影响本地任何运行逻辑,用Heroku的子目录部署配置就行:

  • 先确定你要部署的服务对应的子目录路径:
    • 部署后端Node服务:路径是recipes/backend/node_postgres
    • 部署前端静态项目:路径是recipes/frontend
  • 打开终端,进到本地Git仓库根目录(就是Recipes/文件夹,能看到.git隐藏文件夹的那层),依次执行下面三条命令:
heroku buildpacks:set subdir-heroku-buildpack
# 把命令里的<目标路径>换成你上面选的实际子目录路径,比如部署后端就填recipes/backend/node_postgres
heroku config:set PROJECT_PATH=<目标路径>
heroku buildpacks:add heroku/nodejs
  • 配置完正常执行git push heroku main就行,Heroku会自动进到你指定的子目录执行Node构建流程,本地代码一个文件都不用改。
方案2:调整目录结构(适合长期维护,不会破坏原有逻辑)

如果想把结构整理成Heroku默认识别的标准结构,按下面步骤操作,每一步都可以本地验证,不会出问题:

  1. 先把整个Recipes/文件夹复制一份当备份,操作都在原目录做,出问题直接用备份覆盖回滚。
  2. 先清理后端冗余层级:你现在后端代码套在backend/node_postgres/下,多了一层无用的node_postgres目录,直接把node_postgres里的所有文件(index.js、package.json、package-lock.json等)全选移动到上一层backend/目录,删了空的node_postgres文件夹。移动完进到backend/目录,执行npm install重新拉一遍依赖,再跑node index.js确认后端能正常启动就行,依赖路径不会因为这层移动失效。
  3. 调整Git仓库根目录:现在你的Git仓库是在最外层Recipes/下,把.git隐藏文件夹直接剪切到内层recipes/目录里,之后进到recipes/目录执行git status,只要没提示大面积文件删除就没问题。
  4. 按部署目标调整根目录文件:
    • 单独部署后端:把backend/下的所有文件全移到recipes/根目录,移完执行npm install、启动服务验证接口正常即可,此时根目录就有package.json,Heroku能直接识别
    • 单独部署前端:把frontend/下的所有文件全移到recipes/根目录,本地跑启动命令确认页面访问正常即可
    • 需要同时部署前后端:在recipes/根目录新建package.json,配置启动脚本同时拉起前后端服务,或者把前端构建后的静态文件交给后端托管,原有子目录的业务代码不用改,不会影响运行逻辑。
  5. 所有调整完,本地把前后端都跑一遍,确认接口请求、页面跳转都和调整前完全一致,再推送代码到Heroku。
注意事项
  • 不要手动改node_modules里的任何文件,移动完代码重新执行npm install会自动修正所有依赖路径
  • 记得在Git仓库根目录加.gitignore文件,把node_modules目录加进去,不要把依赖文件夹提交到仓库,不然会导致部署包过大、构建失败
  • 如果推送还是报找不到package.json,执行git ls-tree -r main --name-only看一下提交到Git的文件列表,确认package.json确实在提交的根目录路径下

内容的提问来源于stack exchange,提问作者deadant88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 06:18:27