赞
踩
报错:Error: error:0308010C:digital envelope routines::unsupported
报错项目案例QingHub
主要是因为 node V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,node v17 之前版本没影响,但 V17 和之后版本会出现这个错误。我的node版本今天升了级,从V14升级到了V20
报错详细信息:
rror: 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:\XXX\map-edit2\font\node_modules\webpack\lib\util\createHash.js:135:53) at NormalModule._initBuildHash (D:\XXX\map-edit2\font\node_modules\webpack\lib\NormalModule.js:417:16) at handleParseError (D:\XXX\map-edit2\font\node_modules\webpack\lib\NormalModule.js:471:10) at D:\XXX\map-edit2\font\node_modules\webpack\lib\NormalModule.js:503:5 at D:\XXX\map-edit2\font\node_modules\webpack\lib\NormalModule.js:358:12 at D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:373:3 at iterateNormalLoaders (D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:214:10) at iterateNormalLoaders (D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:221:10) at D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:236:3 at runSyncOrAsync (D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:130:11) at iterateNormalLoaders (D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:232:2) at Array.<anonymous> (D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:205:4) at Storage.finished (D:\XXX\map-edit2\font\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16) at D:\XXX\map-edit2\font\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 module.exports (D:\XXX\map-edit2\font\node_modules\webpack\lib\util\createHash.js:135:53) at NormalModule._initBuildHash (D:\XXX\map-edit2\font\node_modules\webpack\lib\NormalModule.js:417:16) at handleParseError (D:\XXX\map-edit2\font\node_modules\webpack\lib\NormalModule.js:471:10) at D:\XXX\map-edit2\font\node_modules\webpack\lib\NormalModule.js:503:5 at D:\XXX\map-edit2\font\node_modules\webpack\lib\NormalModule.js:358:12 at D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:373:3 at iterateNormalLoaders (D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:214:10) at Array.<anonymous> (D:\XXX\map-edit2\font\node_modules\loader-runner\lib\LoaderRunner.js:205:4) at Storage.finished (D:\XXX\map-edit2\font\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16) at D:\XXX\map-edit2\font\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9 at D:\XXX\map-edit2\font\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' }
方案1:打开IDEA 终端,直接输入
export NODE_OPTIONS=--openssl-legacy-provider
set NODE_OPTIONS=--openssl-legacy-provider
$env:NODE_OPTIONS="--openssl-legacy-provider"
方案4: 仅限 windows
在项目中 package.json 的 scripts 中新增 SET NODE_OPTIONS=--openssl-legacy-provider
添加前
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node build/dev-server.js",
"dll": "webpack --config build/webpack.dll.conf.js --mode production",
"build": "cross-env NODE_ENV=production webpack --progress -p --config build/webpack.prod.js --mode production"
}
添加后
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "SET NODE_OPTIONS=--openssl-legacy-provider && node build/dev-server.js",
"dll": "webpack --config build/webpack.dll.conf.js --mode production",
"build": "cross-env NODE_ENV=production webpack --progress -p --config build/webpack.prod.js --mode production"
},
我最终是用第4种方法解决问题的
报错项目案例QingHub
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。