🔥
【Node.js】エラー:パッケージおよび依存関係との互換性によるエラー
概要
下記リンクのフロントエンドにて、npm installをしてionic serveでlocalhostを立ち上げようとしたところ、エラーが発生した。
エラー内容は下記の通り。
[ng] Error: error:0308010C:digital envelope routines::unsupported
...
[ng] opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
[ng] library: 'digital envelope routines',
[ng] reason: 'unsupported',
[ng] code: 'ERR_OSSL_EVP_UNSUPPORTED'
(略)
[ng] Node.js v19.7.0
エラーの原因
Node.jsで使用しているOpenSSLに関する問題が発生していた。その理由としては、NOde.jsのバージョンとプロジェクトで使用しているパッケージや依存関係との互換性が問題だった。
まず下記エラーに記載されている通り、現在使用しているNode.jsのバージョンがv19.7.0であることがわかる。必ずしも、最新バージョンが互換性がある訳ではないため、エラーが発生する。
[ng] Node.js v19.7.0
次に、下記に具体的なエラー内容が書かれている。OpenSSLというNode.jsが内部で使用している暗号化ライブラリで問題が発生していると書かれている。このような問題は、プロジェクトで使用されているパッケージや依存関係と互換性の問題であることが多い。
[ng] Error: error:0308010C:digital envelope routines::unsupported
...
[ng] opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
[ng] library: 'digital envelope routines',
[ng] reason: 'unsupported',
[ng] code: 'ERR_OSSL_EVP_UNSUPPORTED'
対応策
Node.jsのバージョンをダウングレードすることで問題が解決する。Node.jsのHPから安定版をダウンロードすること(*下記画像の場合、v18.15.0)が解決することが多い。ただし、プロジェクトが古い場合は、プロジェクト管理者に「どのnode.jsをインストールすべきか」確認した方が良い。
インストールすべきnode.jsがわかれば、あとはプロジェクトのルートフォルダでnodenvを設定しnpm install後にionic serveすれば解決する。nodenvの設定方法は、下記記事を参考にすると良い。
GitHub
Discussion