マシン(PC)をWindowsからMacに切り替えた時、Node.js 18でOpen SSL互換対応エラーに直面しました

この度新しくメインマシンを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

【もう一つ参考にしたサイト記事】

この記事を書いた人