解决Node.js与OpenSSL 3.0不兼容问题

解决Node.js与OpenSSL 3.0不兼容问题

在某些情况下,使用 Node.js 17 或更高版本时,可能会遇到与 crypto 库有关的错误。这主要是因为 Node.js 17 引入了对 OpenSSL 3.0 的支持,该版本对于一些 API 进行了重大更改,这可能导致与某些 Node.js 库或依赖项的不兼容。

错误描述

以下是错误的示例:

Error: error:0308010C:digital envelope routines::unsupported
...
code: 'ERR_OSSL_EVP_UNSUPPORTED'

解决方案

为了解决与 OpenSSL 3.0 的不兼容问题,Node.js 提供了 --openssl-legacy-provider 选项,但这并不总是有效。

一种有效的解决方法是退回到 Node.js 16,这是一个长期支持(LTS)版本,并且不包括 OpenSSL 3.0 的支持。

使用NVM切换Node.js版本

NVM (Node Version Manager) 是一个非常方便的工具,允许在同一台机器上安装、管理和切换多个 Node.js 版本。

安装NVM
  1. 访问NVM GitHub 仓库 获取安装指南。
  2. 对于大多数用户,只需在终端运行以下命令即可:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
使用NVM切换Node.js版本
  1. 安装 Node.js 16
nvm install 16
  1. 切换至 Node.js 16 版本
nvm use 16

这样,就切换到了 Node.js 16,并且应该不会再遇到与 OpenSSL 3.0 不兼容的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值