运行项目时报错: error:0308010C:digital envelope routines::unsupported

1,414 阅读1分钟

window、node V18、vscode

错误描述

运行npm run dev的时候出现报错

(原本电脑的node版本为"14.16.0",搭建安装react-native的时候提示所需的版本为:"^12.22.0 || ^14.17.0 || >=16.0.0",干脆就更新到了18版本,rn时搭建成功了,原本电脑的项目就启动不成功了--)

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.__webpack_modules__.57442
...........
{
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

问题原因

主要是nodeJs V17版本发布了OpenSSL3.0对算法和密钥大小增加了更为严格的限制。

所以就是node版本太高不兼容导致运行失败

解决方法

在网上查找了一些解决方案

方法一: 在package.json的scripts的命令中添加SET NODE_OPTIONS=--openssl-legacy-provider

image.png 注意:如果团队中node版本不一致,不建议将该package.json提交。

方法二、在编译器的集成终端运行命令行:$env:NODE_OPTIONS="--openssl-legacy-provider",在运行npm run dev(临时解决方案)

image.png

方法三、降低node版本 下载安装包

按照需求选择安装包版本 https://npm.taobao.org/mirrors/node/v14.21.3/node-v14.21.3-x64.msi