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

Heroku推送Node.js项目报pre-receive hook declined错误求助

Heroku Node.js项目推送部署失败求助

问题描述

推送代码到Heroku平台执行部署时持续失败,已尝试两类修复方案均未生效:

  • 在根目录package.json中声明匹配的Node、NPM对应版本
  • 从本地新分支执行git push heroku new-branch:main形式的推送操作
    现附上完整推送报错日志,求可行解决思路。

完整报错日志

Total 0 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Building on the Heroku-20 stack
remote: -----> Using buildpack: heroku/nodejs
remote: -----> Node.js app detected
remote:        
remote: -----> Creating runtime environment
remote:        
remote:        NPM_CONFIG_LOGLEVEL=error
remote:        NODE_VERBOSE=false
remote:        NODE_ENV=production
remote:        NODE_MODULES_CACHE=true
remote:        
remote: -----> Installing binaries
remote:        engines.node (package.json):  16.x
remote:        engines.npm (package.json):   8.x
remote:        
remote:        Resolving node version 16.x...
remote:        Downloading and installing node 16.16.0...
remote:        Bootstrapping npm 8.x (replacing 8.11.0)...
remote:        npm 8.13.2 installed
remote:        
remote: -----> Installing dependencies
remote:        Installing node modules
remote:        
remote:        > openmenu@1.2.1 install
remote:        > npm --prefix backend install backend && npm --prefix frontend install frontend
remote:        
remote:        npm ERR! code ENOENT
remote:        npm ERR! syscall open
remote:        npm ERR! path /tmp/build_4492b4f5/backend/package.json
remote:        npm ERR! errno -2
remote:        npm ERR! enoent ENOENT: no such file or directory, open '/tmp/build_4492b4f5/backend/package.json'
remote:        npm ERR! enoent This is related to npm not being able to find a file.
remote:        npm ERR! enoent 
remote:        
remote:        npm ERR! A complete log of this run can be found in:
remote:        npm ERR!     /tmp/npmcache.oFKZI/_logs/2022-07-08T01_43_06_983Z-debug-0.log
remote:        npm ERR! code 254
remote:        npm ERR! path /tmp/build_4492b4f5
remote:        npm ERR! command failed
remote:        npm ERR! command sh -c /tmp/install657244586683.sh
remote:        
remote:        npm ERR! A complete log of this run can be found in:
remote:        npm ERR!     /tmp/npmcache.oFKZI/_logs/2022-07-08T01_43_04_790Z-debug-0.log
remote: 
remote: -----> Build failed
remote:        
remote:        We're sorry this build is failing! You can troubleshoot common issues here:
remote:        https://devcenter.heroku.com/articles/troubleshooting-node-deploys
remote:        
remote:        If you're stuck, please submit a ticket so we can help:
remote:        https://help.heroku.com/
remote:        
remote:        Love,
remote:        Heroku
remote:        
remote:  !     Push rejected, failed to compile Node.js app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !       Push rejected to openmenu-live.
remote: 
To https://git.heroku.com/openmenu-live.git
 ! [remote rejected] new-branch -> main (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/openmenu-live.git'

问题定位与修复方案

从报错日志可以确认,Node、NPM版本安装环节完全正常,核心故障点为依赖安装阶段,Heroku构建环境内找不到/tmp/build_xxx/backend/package.json文件,按以下顺序排查即可:

  • 检查本地目录结构:确认项目根目录下真实存在backend/package.json、frontend/package.json两个文件,保证脚本里写的路径和本地实际目录结构一致
  • 检查.gitignore规则:确认没有将backend、frontend目录,或是两个目录下的package.json文件加入忽略列表,否则推送时这部分文件不会被上传到Heroku构建环境,必然触发文件不存在错误
  • 修正根目录package.json的脚本写法:当前install脚本中npm --prefix backend install backend属于冗余错误写法,--prefix backend参数已经指定npm的运行目录为backend,不需要再额外加backend作为安装参数,调整为如下写法即可:
    "scripts": {
      "install": "npm --prefix backend install && npm --prefix frontend install",
      "build": "npm --prefix backend run build && npm --prefix frontend run build",
      "start": "node backend/你的服务入口文件.js"
    }
    
  • 校验待推送的提交内容:执行git ls-tree -r new-branch查看待推送到Heroku的分支文件列表,确认backend/package.json、frontend/package.json在列表中,避免因提交不全、分支缓存导致文件漏传
  • 如果是monorepo结构,确认Heroku的构建根目录配置正确,不要将构建上下文设置到其他子目录,否则构建时会因路径错位找不到前后端目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:39:30