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

将Rails 7.x应用部署到Heroku时遇ERR_OSSL_EVP_UNSUPPORTED错误求助

解决Rails 7.x部署Heroku时资产预编译的OpenSSL错误

这个错误的核心原因是Node.js 18+默认使用OpenSSL 3.0,而Webpack等资产编译工具依赖的旧哈希算法(如MD4)在OpenSSL 3.0中被标记为不安全并禁用,导致资产预编译失败。以下是几种可行的解决方法:

方法1:启用OpenSSL兼容模式

通过设置Node环境变量,强制使用旧版OpenSSL提供器,兼容原有哈希算法:

  • 使用Heroku CLI直接配置环境变量:
    heroku config:set NODE_OPTIONS="--openssl-legacy-provider"
    
  • 或者修改项目根目录的package.json,在build脚本中添加参数:
    "scripts": {
      "build": "NODE_OPTIONS='--openssl-legacy-provider' rails assets:precompile"
    }
    

方法2:降级Node.js版本到16.x

Node.js 16.x默认使用OpenSSL 1.1.1,不存在这个兼容性问题:

  • 在项目根目录创建.node-version文件,写入指定版本:
    16.20.0
    
  • 或者在package.json中声明Node版本要求:
    "engines": {
      "node": "16.x"
    }
    

方法3:升级Webpack到适配OpenSSL 3.0的版本

新版Webpack已经修复了OpenSSL 3.0的兼容性问题,直接更新依赖即可:

npm update webpack
# 若使用yarn则执行:yarn upgrade webpack

完成上述任一配置后,重新推送代码到Heroku即可完成部署:

git push heroku main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:40:45