この度新しくメインマシンをWindowsからMacに切り替えようとして、新しく一からgulp環境構築した時に出会ったエラーについて書きます。
今回は、Node.js18.12.1のバージョンをインストールしてMacBook Air (macOS Monterey ver12.6)でのお話です。
エラー文(一部抜粋)は以下です。
opensslErrorStack: [ 'error:********:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
結論から言うと、下記サイトの記事を参考にして解決しました。
https://zenn.dev/yogarasu/articles/425732ff408d06
上記サイトでは、以下のように環境変数を設定して、レガシープロバイダーに戻すことで対処しています。
export NODE_OPTIONS=--openssl-legacy-provider
ただ、参考サイトでも言及がありますが、これは暫定的な対処法であって解決策ではないとのこと。
一応私がインストールした「18.12.1」はLTSになっているのでOpen SSL互換エラーが出るライブラリが他になければ、上記サイトのように最終的には環境変数を削除していきたいです。
でも、とりあえずはこれで。
また後で振り返られるように、エラー文の全体と他の参考サイトをもう1つ挙げておきます。
【今回のエラー文】
[05:58:36] The following tasks did not complete: build, copyImages
[05:58:36] Did you forget to signal async completion?
node:events:491
throw er; // Unhandled 'error' event
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at BulkUpdateDecorator.hashFactory (/Users/...(省略).../node_modules/webpack/lib/util/createHash.js:145:18)
at BulkUpdateDecorator.update (/Users/...(省略).../node_modules/webpack/lib/util/createHash.js:46:50)
at RawSource.updateHash (/Users/...(省略).../node_modules/webpack-sources/lib/RawSource.js:64:8)
at NormalModule._initBuildHash (/Users/...(省略).../node_modules/webpack/lib/NormalModule.js:868:17)
at handleParseResult (/Users/...(省略).../node_modules/webpack/lib/NormalModule.js:934:10)
at /Users/...(省略).../node_modules/webpack/lib/NormalModule.js:1026:4
at processResult (/Users/...(省略).../node_modules/webpack/lib/NormalModule.js:743:11)
at /Users/...(省略).../node_modules/webpack/lib/NormalModule.js:807:5
Emitted 'error' event on Domain instance at:
at emit (node:internal/process/promises:147:33)
at processPromiseRejections (node:internal/process/promises:283:27)
at process.processTicksAndRejections (node:internal/process/task_queues:96:32) {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v18.12.1
【もう一つ参考にしたサイト記事】