【Node.js】 Error: error:0308010C:digital envelope routines::unsupported【npm】

Node.jsのバージョンを下げる方法

webpackでのエラー

node:internal/crypto/hash:67
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)

    (略)

    59:103 {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Docker環境下で開発中にnpm run devを実行した際に起きたエラー。

解決手段

Node.js v17.x で ERR_OSSL_EVP_UNSUPPORTED エラー

上記githubフォーラムにて「Node.js v17 で OpenSSL 3.0 を含む形に変わったことに起因する」とのことなので、とりあえずnodebrewを使ってv16に下げることにした。

Node.js v16にダウングレード

$ nodebrew ls-remote

上記のコマンドにてバージョン一覧を出力します。

v0.0.1    v0.0.2    v0.0.3    v0.0.4    v0.0.5    v0.0.6    

v0.1.0    v0.1.1    v0.1.2    v0.1.3    v0.1.4    v0.1.5    v0.1.6    v0.1.7
v0.1.8    v0.1.9    v0.1.10   v0.1.11   v0.1.12   v0.1.13   v0.1.14   v0.1.15
v0.1.16   v0.1.17   v0.1.18   v0.1.19   v0.1.20   v0.1.21   v0.1.22   v0.1.23
v0.1.24   v0.1.25   v0.1.26   v0.1.27   v0.1.28   v0.1.29   v0.1.30   v0.1.31
v0.1.32   v0.1.33   v0.1.90   v0.1.91   v0.1.92   v0.1.93   v0.1.94   v0.1.95
v0.1.96   v0.1.97   v0.1.98   v0.1.99   v0.1.100  v0.1.101  v0.1.102  v0.1.103
v0.1.104  

(略)

v16.0.0   v16.1.0   v16.2.0   v16.3.0   v16.4.0   v16.4.1   v16.4.2   v16.5.0
v16.6.0   v16.6.1   v16.6.2   v16.7.0   v16.8.0   v16.9.0   v16.9.1   v16.10.0
v16.11.0  v16.11.1  v16.12.0  v16.13.0  v16.13.1  v16.13.2  v16.14.0  

v17.0.0   v17.0.1   v17.1.0   v17.2.0   v17.3.0   v17.3.1   v17.4.0   v17.5.0
v17.6.0   v17.7.0   v17.7.1

v16の中で一番新しいのがv16.14.0なので、このバージョンを使いたいと思います。

$ nodebrew install-binary v16.14.0

インストールできたかを確認する。

$ nodebrew ls

上記コマンドにて出力された結果が、下記の利用可能なバージョン一覧になります。

v12.16.1
v16.7.0
v16.14.0
v17.3.0

current: v17.3.0

現在はv17.3.0なので、次はこれをv16.14.0にします。

nodebrewでバージョン切り替え

$ nodebrew use v16.14.0

上記コマンドにてバージョンを切り替えます。

先ほどのcurrent: v17.3.0の部分に変化があったか確認してみます。

$ nodebrew ls
v12.16.1
v16.7.0
v16.14.0
v17.3.0

current: v16.14.0

current: v16.14.0に変わっていることが確認できました。

ERR_OSSL_EVP_UNSUPPORTEDエラーは解決

当初の目的であるnpm run devは問題なく実行できるようになりました。

なお、今回はとにかく開発を前に進めたかったので、Node.jsのバージョンを下げるということを選択しましたが、他にも「webpack.config.js」に「hashFunction: “xxhash64″」を追加する方法や環境変数に「export NODE_OPTIONS=–openssl-legacy-provider」を設定する方法もあります。

また、バージョンの切り替えについては、今回「nodebrew」を使用しましたが「n」や「nodenv」「nvm」といったバージョン管理ツールがありますので、是非使ってみてください。

 

 

 

About Naoki 24 Articles
デザインを含めたフロントエンドから、インフラ含めたバックエンドまで広く浅く活動しているエンジニアです。主にSaasの開発・営業・運営管理などをしております。毎日デスマーチがモットーなブラックエンジニアです。 私が管理しているクラウドソフトウェアがこちらです→まとめツール倶楽部『MTCsystem』

Be the first to comment

Leave a Reply

Your email address will not be published.


*


CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)