公開日:3/21/2023  更新日:3/21/2023

  • twitter
  • facebook
  • line

Nodejsで「error:0308010C:digital envelope routines::unsupported」と出てエラー

現在のバージョン

nodejsのバージョン:18.15.0
npmのバージョン:9.5.0

環境

Windows11

エラー内容

以前かなり古いバージョンのNodejsを使用していたので、最新版にバージョンアップしたところ npm run dev のコマンドを実行したら以下のエラーが表示された。

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

  at new Hash (node:internal/crypto/hash:71:19)
  at Object.createHash (node:crypto:133:10)
  at module.exports (node_modules\webpack\lib\util\createHash.js:135:53)
  at NormalModule._initBuildHash (node_modules\webpack\lib\NormalModule.js:417:16)
  at node_modules\webpack\lib\NormalModule.js:452:10
  at node_modules\webpack\lib\NormalModule.js:323:13
  at node_modules\loader-runner\lib\LoaderRunner.js:367:11
  at node_modules\loader-runner\lib\LoaderRunner.js:233:18
  at context.callback (node_modules\loader-runner\lib\LoaderRunner.js:111:13)
  at node_modules\babel-loader\lib\index.js:59:103


node:internal/crypto/hash:71
  this[kHandle] = new _Hash(algorithm, xofLen);

変更内容

package.json の以下の scripts にNODE_OPTIONS の環境変数を設定。
OpenSSL3をレガシープロパイダーに戻すことでエラーを回避。

  "scripts": {
    "dev": "set NODE_OPTIONS=--openssl-legacy-provider && nuxt",
    "build": "set NODE_OPTIONS=--openssl-legacy-provider && nuxt build",
    "start": "nuxt start",
    "generate": "set NODE_OPTIONS=--openssl-legacy-provider && nuxt generate"
  }

上記は、Windows での環境変数の設定方法だが Linux OS環境では以下の記載となる。

"scripts": {
  "dev": "NODE_OPTIONS='--openssl-legacy-provider' nuxt",
  "build": "NODE_OPTIONS='--openssl-legacy-provider' nuxt build",
  "start": "nuxt start",
  "generate": "NODE_OPTIONS='--openssl-legacy-provider' nuxt generate"
},

戻る