【rails】Heroku 「error:0308010C:digital envelope routines::unsupported」

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

Herokuにデプロイするとエラーが起こる

前回、node-sassのバージョンに関するエラーを解消するも新たなエラーが発生

備忘録としてエラー解消方法を残しておく


開発環境

ruby 2.7.7

Rails 6.0.6.1

MacOS sonoma14.5


エラー内容

Waiting on build...
-----> Building on the Heroku-20 stack

# 長文すぎるので割愛

 !
 !     Precompiling assets failed.
 !
 !     Push rejected, failed to compile Ruby app.
 !     Push failed

あれ?どれがエラー?となったが、「Precompiling assets failed.」がエラーらしい


Precompiling assets failed.

このエラーをまずGoogle検索したところ、こちらの記事を発見

でも詳細なエラー内容は違うみたいなので、発生したエラーのログをもっとよく見てみる


Error: error:0308010C:digital envelope routines::unsupported

ログを遡っていくと、途中でポツンとエラー文があることを発見

# 308行目
Error: error:0308010C:digital envelope routines::unsupported

chatGPTによると、以下が原因らしい

  • Node.jsのバージョン17以上で、OpenSSL 3がデフォルトで使われるようになったこと
  • 上記によってライブラリが非サポートとなったこと

前回、webpackerのバージョンを上げたため、Nodejsのバージョンにも影響が出てしまった・・?


開発環境を考慮してワード検索する

Error: error:0308010C:digital envelope routines::unsupported

上記のエラー文言でGoogle検索していると、他言語の記事が多く出てくる

他言語の記事を読むも解決策や修正方法が分からず、デイトラチャットで質問

自分の環境と同じ状況でエラーが出ている記事を探すこと」をアドバイスいただく

(開発中に他言語も出てくるのかと混乱していたので助かりました)

あらためて「Heroku」も含めて検索したところ、すぐにこちらの記事を発見


解決方法

Heroku側で環境の設定

  1. Heroku画面からSettingsを開く
  2. Config VarsのReveal Config Varsをクリック
  3. 以下を追加(Add)する
KEYVALUE
NOTE_OPTIONS–openssl-legacy-provider

production.rbに環境変数を追加

config/environments/production.rbを開く

  ENV['NODE_OPTIONS'] = '--openssl-legacy-provider'

これによりエラーが解消された!


ようやくデプロイ成功!!

お疲れさまでした〜

#DAY26