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

NodeJS应用部署到Heroku时报pre-receive hook declined错误如何解决?

报错原因

! [remote rejected] master -> master (pre-receive hook declined) 是Heroku远端接收代码前的预校验流程失败触发的报错,针对NodeJS项目常见触发原因如下:

  • 项目根目录缺失package.json文件,或package.json存放在子目录下,Heroku无法识别项目类型
  • package.json未配置engines字段,或指定的Node.js、npm版本不在Heroku当前支持的版本范围内
  • 生产环境所需依赖错误写入devDependencies字段,Heroku默认不安装开发依赖导致构建失败
  • 本地master分支代码版本落后于Heroku远端版本,存在版本冲突
  • package.json的scripts字段中未配置start启动指令,Heroku无法完成应用启动校验
  • 项目构建命令执行报错,比如依赖安装失败、前端资源编译失败等
解决方案
  • 确认package.json存放在项目根目录,如果项目代码存放在子目录,可使用git subtree push --prefix 子目录路径 heroku master命令推送指定子目录
  • 在package.json中添加engines配置,指定Heroku支持的运行版本,示例配置如下:
{
  "engines": {
    "node": "18.x",
    "npm": "9.x"
  }
}
  • 核对所有生产环境依赖都写入dependencies字段,也可执行heroku config:set NPM_CONFIG_PRODUCTION=false配置Heroku安装全部依赖做临时排查
  • 先拉取远端最新代码解决冲突后再推送,依次执行:
    git pull heroku master
    # 解决代码冲突后执行提交
    git push heroku master
    
  • 确认package.json的scripts中配置了正确的start指令,示例如下:
{
  "scripts": {
    "start": "node app.js"
  }
}
  • 本地先执行npm install、npm run build(如果有构建配置)确认本地构建无报错后再推送
  • 执行heroku logs --tail查看完整的构建运行日志,定位具体的错误点做针对性修复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:06:01