古いバージョンのプロジェクトを実行するとエラー: エラー:0308010C:デジタル エンベロープ ルーチン::サポートされないの問題を解決する

環境

Node.js :v18.12.1

開発ツール: VsCode

プロジェクト実行時のエラーは次のとおりです。

//报错主要提示,第一行。
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 (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\util\createHash.js:145:18)
    at BulkUpdateDecorator.update (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\util\createHash.js:46:50)    at OriginalSource.updateHash (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\node_modules\webpack-sources\lib\OriginalSource.js:131:8)
    at NormalModule._initBuildHash (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:888:17) 
    at handleParseResult (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:954:10)
    at D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:1048:4
    at processResult (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:763:11)
    at D:editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:827:5 {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',

Node.js v18.12.1   //当前版本号。

理由

Node.js のバージョンが高すぎるため、Node.js V17 バージョンでリリースされた OpenSSl3.0 では、許可されるアルゴリズムとキー サイズに厳しい制限が追加され、エコシステムに影響を与える可能性があります。

node -v    //cmd进入命令行输入命令,查看自己的版本号

解決:

問題に対する永続的な解決策:

最初: コマンドライン入力

$env:NODE_OPTIONS="--openssl-legacy-provider"

2 番目: 率先して Node.js のバージョンを下げます。

node.js を 16 以下のバージョンに変更します。

実際の開発では、1 つのプロジェクトのためにすべての開発者にバージョンダウンを要求するのは不合理であり、複数のプロジェクトを所有している開発者もおり、連鎖反応が発生するため、この方法は推奨されません。ここでは詳細は紹介しません。

環境変数を使用して問題を一時的に解決します: (コマンド ライン入力は管理者モードである必要があります)

第一に、Windows環境では開発ツールのターミナルには入らないこと!

コマンドラインに入力します: 入力完了後にプロジェクトを再起動します。

set NODE_OPTIONS=--openssl-legacy-provider 

その2:LinuxやWSL環境では開発ツールのターミナルには入力しないでください!

export NODE_OPTIONS=--openssl-legacy-provider

おすすめ

転載: blog.csdn.net/youyudehan/article/details/128476816