将 Rails 应用程序推送到 heroku 给我错误:错误:0308010C:数字信封例程::不支持

Mar*_*ear 8 ruby-on-rails heroku

我有一个 Rails 7.x 应用程序,我试图推送到 heroku 并收到此错误:

remote:        Running: rake assets:precompile
remote:        Compiling...
remote:        Compilation failed:
remote:        node:internal/crypto/hash:71
remote:          this[kHandle] = new _Hash(algorithm, xofLen);
remote:                          ^
remote:
remote:        Error: error:0308010C:digital envelope routines::unsupported
remote:            at new Hash (node:internal/crypto/hash:71:19)
remote:            at Object.createHash (node:crypto:133:10)
remote:            at module.exports (/tmp/build_b1f32be4/node_modules/webpack/lib/util/createHash.js:135:53)
remote:            at NormalModule._initBuildHash (/tmp/build_b1f32be4/node_modules/webpack/lib/NormalModule.js:417:16)
remote:            at handleParseError (/tmp/build_b1f32be4/node_modules/webpack/lib/NormalModule.js:471:10)
remote:            at /tmp/build_b1f32be4/node_modules/webpack/lib/NormalModule.js:503:5
remote:            at /tmp/build_b1f32be4/node_modules/webpack/lib/NormalModule.js:358:12
remote:            at /tmp/build_b1f32be4/node_modules/loader-runner/lib/LoaderRunner.js:373:3
remote:            at iterateNormalLoaders (/tmp/build_b1f32be4/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
remote:            at iterateNormalLoaders (/tmp/build_b1f32be4/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
remote:            at /tmp/build_b1f32be4/node_modules/loader-runner/lib/LoaderRunner.js:236:3
remote:            at context.callback (/tmp/build_b1f32be4/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
remote:            at /tmp/build_b1f32be4/node_modules/babel-loader/lib/index.js:44:71 {
remote:          opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
remote:          library: 'digital envelope routines',
remote:          reason: 'unsupported',
remote:          code: 'ERR_OSSL_EVP_UNSUPPORTED'
remote:        }
remote:
remote:        Node.js v18.12.1
remote:
remote:
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote:
remote:  !     Push failed
Run Code Online (Sandbox Code Playgroud)

我本地的节点版本是v18.12.1. 我还看到了一些可能与 openssl 有关的问题。我的本地 openssl 版本是OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022).

任何帮助表示赞赏!

Mar*_*ear 9

我尝试了很多方法来尝试解决这个问题,但我认为最终所做的是添加

 "engines": {
    "node": "16.18.1"
  }
Run Code Online (Sandbox Code Playgroud)

...到我的 package.json 文件。另外,我认为正确的方法是继续在本地安装相同版本的节点并重新运行,yarn install以便您的yarn.lock文件对于该版本是正确的。

希望这对某人有帮助!