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

Rails 6.1.3 Heroku部署失败,修复babel问题仍报错求解决

解决Rails 6.1.3 + Ruby 3.0.1部署Heroku时的资产预编译失败问题

核心错误:error:0308010C:digital envelope routines::unsupported

该错误是Node.js 17+默认启用新OpenSSL哈希算法,而项目依赖的compression-webpack-plugin版本不兼容导致的,是资产预编译失败的直接原因,优先处理:

方案1:指定兼容的Node.js版本

Heroku默认会使用较新版本的Node,我们可以强制指定与Rails 6.1.x兼容的16.x版本:

  • 在项目根目录创建.nvmrc文件,写入:16.20.2
  • 或者在package.json中添加engines字段:
"engines": {
  "node": "16.x",
  "yarn": "1.x"
}

提交修改后重新推送到Heroku,平台会自动安装指定版本的Node。

方案2:启用OpenSSL Legacy Provider

若不想修改Node版本,可通过环境变量让Node使用旧哈希算法:

  • 登录Heroku控制台,进入项目「Settings」→「Config Vars」,添加变量:
    • 键:NODE_OPTIONS
    • 值:--openssl-legacy-provider
  • 或通过Heroku CLI执行:
heroku config:set NODE_OPTIONS="--openssl-legacy-provider"

次要警告:autoprefixer color-adjust弃用

该警告不影响编译,但可按需消除:

方案1:直接修改代码

找到报错的scss文件(application.scss、chat.scss),将color-adjust替换为print-color-adjust。

方案2:关闭警告(适用于第三方库引入的情况)

若该属性来自第三方依赖无法直接修改,可在PostCSS配置中关闭该警告:

  • 在项目根目录创建或修改postcss.config.js:
module.exports = {
  plugins: [
    require('autoprefixer')({
      deprecationWarnings: false
    })
  ]
};

内容的提问来源于stack exchange,提问作者Jaymarc San Luis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:17:39