📌

node18系へのバージョンアップのエラー対応【webpack】

2024/02/28に公開

エラー内容

error:0308010C:digital envelope routines::unsupported

webpack.mix.jsを使用している案件にて、node.jsのバージョンを16.0.0→18.19.1にアップデート。
node.jsのバージョンをアップデートし、npm installしようとしたところ、上記のエラーが出て動かない😢

原因

node.jsの17系以降では、OpenSSLライブラリのバージョンが3.0に変更になっている。
他のライブラリで使用しているOpenSSLのバージョンが古い場合に、起きてしまうエラーのよう。

対応

対応としては下記の2通り。

方法①:古いバージョンのOpenSSLを使用しているパッケージをアップデート

私はこちらで解消できました(面倒だったので全部一括でパッケージをアップデートしました
https://www.npmjs.com/package/npm-check-updates

方法②:古いバージョンのOpenSSLを使用するよう、package.jsonで指定する

$ export NODE_OPTIONS=--openssl-legacy-provider

下記の記事で詳しく解説されています。
https://qiita.com/kokogento/items/f5b176d05c621223670b

※ただ、セキュリティ的にはあまり推奨されていない模様
https://www.openssl.org/docs/man3.0/man7/OSSL_PROVIDER-legacy.html

参考

https://qiita.com/kokogento/items/f5b176d05c621223670b
https://blog.kimizuka.org/entry/2023/09/07/000000#google_vignette
https://zenn.dev/niccari/articles/ffdd621eb6be5a

Discussion