环境
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