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

Heroku部署Next.js应用因Node版本问题推送被拒如何解决

问题根因
  • Heroku 构建缓存残留了旧的 engines.node 配置(带v前缀的版本号不符合Heroku的semver解析规则),导致解析失败后自动安装了Node 17版本
  • Node 17默认使用OpenSSL 3.0,和你项目中使用的Next 11内置的Webpack 5版本不兼容,触发ERR_OSSL_EVP_UNSUPPORTED报错
  • 末尾的main -> main (pre-receive hook declined)是前面构建失败触发的拦截规则,和分支命名无关,构建成功后该报错会自动消失
解决方案

按顺序执行以下操作即可:

  1. 清除Heroku构建缓存,避免旧配置残留
heroku builds:cache:purge -a 替换为你的Heroku应用名称

执行后根据提示输入y确认清除即可。
2. 修正package.json中的engines配置,明确指定Node和npm版本,不要加v前缀

{
  // 保留其他配置不变,只修改engines字段
  "engines": {
    "node": "16.13.0",
    "npm": ">=8.1.0"
  }
}
  1. (兜底可选)如果仍有兼容性报错,修改build脚本增加OpenSSL兼容参数
{
  // 保留其他配置不变,只修改scripts下的build字段
  "scripts": {
    "dev": "next dev",
    "build": "NODE_OPTIONS=--openssl-legacy-provider next build",
    "start": "next start -p $PORT"
  }
}
  1. 提交所有改动后重新推送到Heroku
git add .
git commit -m "fix: 修正Heroku部署配置"
git push heroku main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:57:02