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

git push部署React应用到Heroku失败报错如何解决

问题根因

网上传的分支保护导致推送失败的说法完全不适用你的场景——你没有关联GitHub仓库,Heroku返回的pre-receive hook declined只是构建流程失败的通用提示,和分支权限规则没有关系。
从报错日志可以定位到两个明确问题:

  • 直接失败原因:package.json与package-lock.json依赖版本不同步。Heroku部署Node.js应用时默认使用npm ci安装依赖,该命令强制要求锁文件和package.json声明的依赖版本完全匹配,你的锁文件中记录的type-fest、typescript版本和package.json中声明的版本存在冲突,直接导致依赖安装中断。
  • 潜在风险:未在package.json中指定Node.js、npm版本,Heroku会默认使用当前构建栈的最新LTS版本,大概率和你本地开发环境版本不一致,后续容易出现兼容问题。
解决步骤

按顺序操作即可修复:

  1. 清理本地失效的依赖和锁文件
    在项目根目录执行对应命令:
  • Mac/Linux系统:
    rm -rf node_modules package-lock.json
    
  • Windows PowerShell环境:
    Remove-Item -Recurse -Force node_modules, package-lock.json
    
  1. 重新生成匹配的锁文件
    执行命令重新安装全量依赖:
npm install

注意:这一步不要使用cnpm、yarn、pnpm等第三方包管理器,也不要随意加--force之类的强制参数,避免生成不符合npm规范的锁文件
3. 固定线上运行时的Node版本
先在本地执行node -v和npm -v拿到你本地开发用的版本号,打开项目根目录的package.json,添加engines字段,版本号填你本地查到的对应值即可,示例:

{
  // 你package.json里原有的其他配置不要动
  "engines": {
    "node": "16.15.1",
    "npm": "8.11.0"
  }
}
  1. 提交改动后重新部署
    依次执行命令提交变更:
git add .
git commit -m "fix: sync lockfile and specify node version for heroku deploy"

之后执行推送命令即可,注意分支名和你本地当前分支、Heroku远端分支保持一致,本地是main就推main,是master就推master,不用硬套网上的main分支命令。

额外排查点

如果走完上面步骤还是报错,检查两个点:

  • 项目根目录有没有.npmrc文件配置了第三方npm源,如果有先临时切回npm官方源再重新执行依赖安装步骤
  • 检查.gitignore文件有没有把package-lock.json加入忽略列表,锁文件必须提交到Git才能被Heroku识别

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:42:14