报错原因
Node版本>=17.x,本地npm run 起项目后会发现终端报错,具体有以下2块关键信息:
Error: error:0308010C:digital envelope routines::unsupported
和
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
根本原因
原因是node v17中的OpenSSL3.0对允许算法和密钥大小增加了严格的限制。此处查看详情
解决办法
1、node版本降级为16.x
既然是版本问题,最简单粗暴的办法就是降级
2、设置环境变量
在终端手动修改环境变量,输入下面的内容:
export NODE_OPTIONS=--openssl-legacy-provider
然后重新启动项目,就不会失败了。
为什么这个办法能解决,因为在上面的根本原因放的链接里面就已经有答案了,如下图:
2023-07-27更新:
上面的内容只是解决了本地启动时的问题,如果项目打包部署也出现了这个问题,并且项目中使用到了crypto
加密库,可以尝试使用下面的配置:文章来源:https://www.toymoban.com/news/detail-751422.html
// vue.config.js or webpack.config.js
const crypto = require('crypto');
const crypto_orig_createHash = crypto.createHash;
crypto.createHash = algorithm => crypto_orig_createHash(algorithm === 'md4' ? 'sha256' : algorithm);
其他修复方法文章来源地址https://www.toymoban.com/news/detail-751422.html
到了这里,关于【前端笔记】npm报错ERR_OSSL_EVP_UNSUPPORTED的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!