当前位置:   article > 正文

解决node报错:Error: error:0308010C:digital envelope routines::unsupported的四种解决方案

rror: error:0308010c:digital envelope routines::unsupported at new hash (nod
问题描述:
    报错:Error: error:0308010C:digital envelope routines::unsupported
  • 1

报错项目案例QingHub

报错原因:
    主要是因为 node V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,node v17 之前版本没影响,但 V17 和之后版本会出现这个错误。我的node版本今天升了级,从V14升级到了V20
  • 1

报错详细信息:

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
解决方案:

方案1:打开IDEA 终端,直接输入

Linux & Mac OS:
export NODE_OPTIONS=--openssl-legacy-provider
  • 1
Windows:
set NODE_OPTIONS=--openssl-legacy-provider
  • 1
方案2:打开IDEA 终端,直接输入(问题解决)
$env:NODE_OPTIONS="--openssl-legacy-provider"
  • 1
方案3:卸载当前版本,安装合适的版本node17以下

方案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"
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

添加后

 "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"
  },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

我最终是用第4种方法解决问题的
报错项目案例QingHub

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/411144
推荐阅读
相关标签
  

闽ICP备14008679号