node.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > node.js > Node.js与OpenSSL 3.0不兼容问题

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

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

使用NVM切换Node.js版本

nvm install 16
nvm use 16

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文