提交代码到Git分支后Heroku应用资源加载失败的原因与修复
故障原因
- 误执行
git init:在已有Git仓库的项目中重新初始化,直接重置了仓库的分支、远程关联等核心配置,导致后续提交的代码并非Heroku所需的正确版本。 - 嵌套Git仓库冲突:项目根目录与后端文件夹各自存在独立Git仓库,根目录的Git会默认忽略后端文件夹内的仓库内容,使得前端构建后复制到后端
public的静态资源无法被根仓库追踪,最终未同步到Heroku服务器。 - 静态资源未正确部署:重新部署时未重新执行前端构建并同步产物到后端
public,或因仓库问题导致构建产物未被提交,使得Heroku上的应用无法找到正确的favicon.ico、manifest.json等资源,出现%PUBLIC_URL%未替换的报错(这是前端未正确构建或构建产物未被部署的典型表现)。
修复步骤
步骤1:清理错误的Git初始化状态
- 回到项目根目录,先确认并恢复Heroku远程关联:
# 查看当前远程仓库列表 git remote -v # 如果没有heroku远程,重新添加 heroku git:remote -a mytrialapp1427 - 切换回原
master分支,确保部署基准正确:git checkout master
步骤2:移除后端嵌套Git仓库
后端文件夹内的独立Git仓库会干扰根仓库的文件追踪,需统一用根仓库管理所有代码:
- 进入后端文件夹,删除其内部的
.git目录(若后端有需要保留的提交记录,先备份该.git目录):cd 后端文件夹名称 rm -rf .git cd .. - 回到根目录,让根仓库重新追踪后端文件夹的所有内容:
git add 后端文件夹名称 git commit -m "移除后端嵌套Git仓库,统一根仓库管理"
步骤3:重新构建前端并同步产物
- 进入前端文件夹,执行构建命令(以React项目为例,其他框架请替换为对应构建命令):
cd 前端文件夹名称 npm run build cd .. - 将前端构建产物同步到后端
public文件夹:# 清空后端public旧资源(可选,避免残留) rm -rf 后端文件夹名称/public/* # 复制新构建的静态资源 cp -r 前端文件夹名称/build/* 后端文件夹名称/public/
步骤4:重新提交并部署到Heroku
- 回到根目录,提交所有更改:
git add . git commit -m "重新构建前端,同步产物到后端public,修复资源加载问题" - 推送到Heroku的
master分支完成部署:git push heroku master
步骤5:验证修复效果
部署完成后,打开Heroku应用,检查浏览器控制台是否还有资源加载报错,同时查看Heroku日志确认请求路径已正常解析(不再出现/%PUBLIC_URL%/这类未替换的路径)。
内容的提问来源于stack exchange,提问作者domwc14
相关产品推荐
相关产品推荐

