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

2024年6月16日Node

node

error:0308010C:digital envelope とはroutines::unsupported

「error:0308010C:digital envelope routines::unsupported」のエラーメッセージは、Node.jsのcryptoモジュールで失敗した時に表示されます。
nodeのバージョンアップで発生するエラーになります。

error:0308010C:digital envelope routines::unsupportedのエラー原因

icon

「error:0308010C:digital envelope routines::unsupported」のエラー原因を説明しますね。

 ERROR  Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:69:19)
    at Object.createHash (node:crypto:133:10)
    at module.exports (/Users/kami/pg/work/dev/hoge/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/Users/kami/pg/work/dev/hoge/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/Users/kami/pg/work/dev/hoge/node_modules/webpack/lib/NormalModule.js:471:10)
    at /Users/kami/pg/work/dev/hoge/node_modules/webpack/lib/NormalModule.js:503:5
    at /Users/kami/pg/work/dev/hoge/node_modules/webpack/lib/NormalModule.js:358:12
    at /Users/kami/pg/work/dev/hoge/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/Users/kami/pg/work/dev/hoge/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at iterateNormalLoaders (/Users/kami/pg/work/dev/hoge/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
    at /Users/kami/pg/work/dev/hoge/node_modules/loader-runner/lib/LoaderRunner.js:236:3
    at runSyncOrAsync (/Users/kami/pg/work/dev/hoge/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
    at iterateNormalLoaders (/Users/kami/pg/work/dev/hoge/node_modules/loader-runner/lib/LoaderRunner.js:232:2)
    at Array.<anonymous> (/Users/kami/pg/work/dev/hoge/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/Users/kami/pg/work/dev/hoge/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /Users/kami/pg/work/dev/hoge/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9

node:internal/crypto/hash:69
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^
  1. 古いバージョンのNode.js: Node.jsの古いバージョンを使用している場合、新しい暗号化アルゴリズムや機能がサポートされていない可能性があります。最新の安定版にアップグレードすることで問題を解決することができます。
  2. 依存関係の問題: アプリケーションが使用している依存関係のうち、crypto関連のモジュールが不足している、または古いバージョンである場合、このエラーが発生する可能性があります。依存関係を更新するか、必要なモジュールを追加することで改善されます。
  3. 環境設定の問題: 環境設定が正しくない場合、例えば、暗号化関連の設定が不足している場合にも、このエラーが発生する可能性があります。必要な設定を行い、Node.jsアプリケーションが正しく動作するようにしてください。

対応方法1

今回エラーが出た、npmコマンドを実行しているシェル内でexportコマンドを叩くことでアプリ内に「NODE_OPTIONS=–openssl-legacy-provider」が反映されます。

export NODE_OPTIONS=--openssl-legacy-provider

ただし欠点があり、アプリやシェルを閉じると「NODE_OPTIONS」も無くなってしまうので、再度行ってください。

スポンサードサーチ

対応方法2

package.jsonに「NODE_OPTIONS=–openssl-legacy-provider」を記述して、コマンド実行時にNODE_OPTIONS変数にopenssl-legacy-providerを設定して実行します。

"scripts": {
  "dev": "NODE_OPTIONS=--openssl-legacy-provider HOST=0.0.0.0 PORT=3000 nuxt dev",
  "build": "NODE_OPTIONS=--openssl-legacy-provider nuxt build",  
 "generate": "nuxt generate",
}

対応方法3

「.zshrc」「.bashrc」に環境変数として設定することで、デフォルトで全てのアプリケーションへ反映することができます。

リンく

欠点としては全てにアプリケーションに適用されてしまうので、旧nodeのアプリの場合だと「unset」する必要があります。

export NODE_OPTIONS=–openssl-legacy-provider によるエラー

node: --openssl-legacy-provider is not allowed in NODE_OPTIONS
icon

「unset」でNODE_OPTIONSプロパティをリセットしてください。

unset NODE_OPTIONS

以上で解決ですね

Node

Posted by kami