若依报错解决

在使用Node.jsv18.16.0和Vue开发时,由于OpenSSL3.0的限制导致加密算法不支持的错误。可以通过设置环境变量`NODE_OPTIONS=--openssl-legacy-provider`临时解决,或回退到Node.jsv16或更低版本。此问题影响了webpack的正常工作,需要开发者采取相应措施。
摘要由CSDN通过智能技术生成

环境

Node.js :v18.16.0

开发工具:VsCode

运行项目报错如下:

ruoyi@3.8.5 dev
> vue-cli-service serve

 INFO  Starting development server...
10% building 2/5 modules 3 active ...\node_modules\@vue\cli-plugin-eslint\node_modules\eslint-loader\index.js??ref--13-0!D:\RuoYi-Vue\ruoyi-ui\src\main.js
    Error: error:0308010C:digital envelope routines::unsupported//报错主要提示,第一行。
    at new Hash (node:internal/crypto/hash:71:19)
    at Object.createHash (node:crypto:133:10)
    at module.exports (D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\util\createHash.js:135:53)
    at NormalModule._initBuildHash (D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\NormalModule.js:417:16)
    at handleParseError (D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\NormalModule.js:471:10)
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\NormalModule.js:503:5
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\NormalModule.js:358:12
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:373:3
    at iterateNormalLoaders (D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
    at iterateNormalLoaders (D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:221:10)
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:236:3
    at runSyncOrAsync (D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:130:11)
    at iterateNormalLoaders (D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:232:2)
    at Array.<anonymous> (D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
    at Storage.finished (D:\RuoYi-Vue\ruoyi-ui\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
node:internal/crypto/hash:71
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^

Error: error:0308010C:digital envelope routines::unsupported//报错主要提示,第一行。
    at new Hash (node:internal/crypto/hash:71:19)
    at Object.createHash (node:crypto:133:10)
    at module.exports (D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\util\createHash.js:135:53)
    at NormalModule._initBuildHash (D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\NormalModule.js:417:16)
    at handleParseError (D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\NormalModule.js:471:10)
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\NormalModule.js:503:5
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\webpack\lib\NormalModule.js:358:12
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:373:3
    at iterateNormalLoaders (D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
    at Array.<anonymous> (D:\RuoYi-Vue\ruoyi-ui\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
    at Storage.finished (D:\RuoYi-Vue\ruoyi-ui\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
    at D:\RuoYi-Vue\ruoyi-ui\node_modules\graceful-fs\graceful-fs.js:123:16
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v18.16.0//当前版本号。
原因

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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值