解决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

访问NVM GitHub 仓库 获取安装指南。对于大多数用户,只需在终端运行以下命令即可:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

使用NVM切换Node.js版本

安装 Node.js 16

nvm install 16

切换至 Node.js 16 版本

nvm use 16

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

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: