公開日:3/21/2023 更新日:3/21/2023
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"
},