🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

555閲覧

Herokuに適したNodeのバージョンは決まっていますか?

Java_student

総合スコア83

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2023/12/28 06:12

実現したいこと

Ruby on Rails で作成したサービスをherokuにアップしたいのですが、node.sのバージョンが高いとの理由でアップすることが出来なかったので、バージョンをダウンさせようと思っているのですが、Herokuが推奨しているnodeのバージョンが見つけることが出来ませんでした。

発生している問題・エラーメッセージ

remote: Error: error:0308010C:digital envelope routines::unsupported remote: at new Hash (node:internal/crypto/hash:68:19) remote: at Object.createHash (node:crypto:138:10) remote: at module.exports (/tmp/build_7cf91660/node_modules/webpack/lib/util/createHash.js:135:53) remote: at NormalModule._initBuildHash (/tmp/build_7cf91660/node_modules/webpack/lib/NormalModule.js:417:16) remote: at handleParseError (/tmp/build_7cf91660/node_modules/webpack/lib/NormalModule.js:471:10) remote: at /tmp/build_7cf91660/node_modules/webpack/lib/NormalModule.js:503:5 remote: at /tmp/build_7cf91660/node_modules/webpack/lib/NormalModule.js:358:12 remote: at /tmp/build_7cf91660/node_modules/loader-runner/lib/LoaderRunner.js:373:3 remote: at iterateNormalLoaders (/tmp/build_7cf91660/node_modules/loader-runner/lib/LoaderRunner.js:214:10) remote: at iterateNormalLoaders (/tmp/build_7cf91660/node_modules/loader-runner/lib/LoaderRunner.js:221:10) remote: at /tmp/build_7cf91660/node_modules/loader-runner/lib/LoaderRunner.js:236:3 remote: at context.callback (/tmp/build_7cf91660/node_modules/loader-runner/lib/LoaderRunner.js:111:13) remote: at /tmp/build_7cf91660/node_modules/babel-loader/lib/index.js:59: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 v20.9.0 remote: remote: remote: ! remote: ! Precompiling assets failed. remote: ! remote: ! Push rejected, failed to compile Ruby app. remote: remote: ! Push failed remote: Verifying deploy... remote:

試したこと

Herokuのバージョンを20.10.0から20.9.0に変更したのですが、変わらずアップできませんでした。
恐らくバージョン20はherokuにアップするのに適していないようです。

補足情報(FW/ツールのバージョンなど)

ruby3
rails6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

OpenSSLの互換性の問題が発生している可能性があります。エラーの内容を検索してみると良いと思います。
例えば、この様な記事がヒットしました => 【Heroku】 error:0308010C が発生してデプロイに失敗する場合の解決策

詳しい状況を把握できていないので、解決策を軽く調べたところ以下の方法がとられている様です。

  • --openssl-legacy-providerオプションを使用する
  • Node.js を16系にダウングレードする
  • npm audit fix: 依存関係をアップデートする
  • Webpackを使っている場合は、最新のバージョンにする

解決策としては、一時的な利用でなければセキュリティリスクの観点からもnpm packageを最新のパージョンにするのが良いかと思います。

Herokuが推奨しているnodeのバージョンが見つけることが出来ませんでした。

試していないのですが、buildpackを利用している場合は、以下を確認すると良さそうだと思います。

$ heroku buildpacks 1. heroku/nodejs 2. heroku/ruby

のようにheroku/nodejsが設定されていることを確認してください。

heroku/nodejsを利用している場合のサポートに関してはこちらで確認できる様です。Node.js Runtimes Supported Runtimes

投稿2023/12/28 07:24

編集2023/12/28 07:26
taketaku

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Java_student

2024/01/04 05:40

様々、試した結果、OpenSSLの互換性エラーが一番怪しいので、そこの修正を試そうとしているのですが、 export NODE_OPTIONS=--openssl-legacy-providerを追記して環境変数を設定すると書いてあるのですが、この記述はpackage.jsonに記述するのでしょうか?
taketaku

2024/01/06 03:00

環境変数は、アプリケーションの実行環境に設定するものです。実行時に環境変数が読み込まれれば良いので、どこに記述するという決まりがある訳ではありません。 例えば、 > VAR_NAME=value rails server や > VAR_NAME=value npm run dev の様に、実行コマンドの前に指定する方法があります。 herokuの実行環境に環境変数を設定する場合は、 > heroku config:set NODE_OPTIONS='--openssl-legacy-provider' --app APP_NAME の様に指定できるようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問