今回、新しいバージョンのNode.jsで古いコードや依存関係を実行しようとしたときに発生するエラーの対処法をご紹介します。
エラー内容
エラーの内容は以下の通りです
Error: error:0308010C:digital envelope routines::unsupported
これは、Node.jsが暗号化関連の操作(この場合はハッシュ関数)を行おうとしたとき、その操作がサポートされていないことを示しています。特に新しいNode.jsのバージョンでは、いくつかの暗号化操作が更新され、古いバージョンで使用されていた方法が使えなくなった可能性があるようです。
解決方法
ここでの対処法は、Node.jsに旧式のOpenSSLプロバイダを使用するよう指示することです。これは次のコマンドを使って行います。
ターミナルで直接設定する
ターミナルを開いて以下のコマンドを入力します。ただし、この設定はそのターミナルセッションにのみ適用され、ターミナルを閉じるとリセットされます。
export NODE_OPTIONS=--openssl-legacy-provider
プロジェクトのパッケージスクリプト内に設定する
package.json
のスクリプト部分に直接設定することも可能です。例えば、”start”スクリプトがある場合、次のように変更できます
ただし、この方法ではそのスクリプトを実行するときにのみ環境変数が設定されます。
"scripts": {
"start": "NODE_OPTIONS=--openssl-legacy-provider node index.js"
}