运行老版本的项目时 报错 Error: error:0308010C:digital envelope routines::unsupported 的问题解决

环境

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"

第二:主动降低 Node.js 的版本。

node.js 修改为不高于 16 的版本

这个方法不推荐,因为在实际开发中,要求每一个开发人员都因为一个项目而降低版本不合理,有的开发人员有多个项目,会连锁反应。在这里不做细节介绍了。

用环境变量临时解决:(命令行输入一定要用管理员模式才可以哟)

第一:windows 环境 不要在开发工具的终端输入!

在命令行输入:  输入完成之后重新启动项目即可

set NODE_OPTIONS=--openssl-legacy-provider 

第二: Linux 或者 WSL 环境 不要在开发工具的终端输入!

export NODE_OPTIONS=--openssl-legacy-provider

猜你喜欢

转载自blog.csdn.net/youyudehan/article/details/128476816