【前端笔记】npm报错ERR_OSSL_EVP_UNSUPPORTED

文章讲述了在Node.js版本17.x中由于OpenSSL3.0的限制导致的报错问题,包括error:0308010C:digitalenveloperoutines::unsupported和error:03000086:digitalenveloperoutines::initializationerror。解决方法包括降级Node版本至16.x或者设置环境变量NODE_OPTIONS=--openssl-legacy-provider。对于项目打包部署时遇到相同问题且使用了crypto加密库的情况,可以通过修改crypto.createHash方法来规避问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错原因

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加密库,可以尝试使用下面的配置:

// 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);

其他修复方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值