# error:0308010C:digital envelope routines::unsupportedの対処法
2024-02-12 16:50:00
Node.jsを更新した後、Expressアプリをローカルで起動すると「0308010C」のエラーで止まった。
package.jsonのscriptsで NODE_OPTIONS=--openssl-legacy-provider を指定すると回避できた。
# Node.jsの更新後に起動するとエラーが出た
Expressアプリをローカルで起動しようとすると、次のエラーメッセージが表示された。
Error: error:0308010C:digital envelope routines::unsupported
# Node.js v17以降でOpenSSL 3.0に変わったことが原因
このエラーは、Node.jsのバージョンをv17.0.0以降に上げたことが原因で発生した。 Node.js v17.0.0以降では、OpenSSLが「OpenSSL 1.1.1」から「OpenSSL 3.0」に変わった。 プロジェクトで使っているライブラリの一部が、この変更に対応していなかった。
# 旧式のOpenSSLプロバイダを使うようNode.jsに指示した
対処として、Node.jsに旧式のOpenSSLプロバイダを使わせた。
package.jsonの serve と build の先頭で、NODE_OPTIONS を設定している。
"serve": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
参照した資料は次のとおりである。