返回

彻底解决npm报错ERR_OSSL_EVP_UNSUPPORTED的终极指南

前端

如何解决 npm 错误 ERR_OSSL_EVP_UNSUPPORTED

作为一名 Node.js 开发者,您可能在使用 npm 时遇到过令人沮丧的 ERR_OSSL_EVP_UNSUPPORTED 错误。这可不是一个小问题,它会阻碍您的项目正常运行,影响您的工作效率。但不要惊慌,我们为您准备了终极指南,一步一步带您轻松解决此问题!

解决方案一:降级 Node.js 版本

最直接的方法是降级 Node.js 版本。按照以下步骤操作:

  • 卸载当前版本的 Node.js:
npm uninstall -g node
  • 安装旧版本的 Node.js:
npm install -g node@16
  • 重新启动项目:
npm start

一切顺利的话,您的项目现在应该可以正常运行了。

解决方案二:更新 OpenSSL

另一种选择是更新 OpenSSL。步骤如下:

  • 检查当前 OpenSSL 版本:
openssl version
  • 如果是旧版本,则更新 OpenSSL:
brew update
brew upgrade openssl
  • 重新启动项目:
npm start

解决方案三:配置 OpenSSL

您还可以通过配置 OpenSSL 来解决此问题。步骤如下:

  • 打开 OpenSSL 配置文件:
sudo nano /etc/ssl/openssl.cnf
  • 找到以下行:
[default]
CipherString = DEFAULT@SECLEVEL=1
  • 将其替换为:
[default]
CipherString = DEFAULT
  • 保存并关闭配置文件。

  • 重新启动项目:

npm start

解决方案四:使用替代的加密库

如果您不想使用 OpenSSL,可以使用替代的加密库,例如 LibreSSL。步骤如下:

  • 安装 LibreSSL:
brew install libressl
  • 配置 Node.js 使用 LibreSSL:
export LDFLAGS="-L/opt/local/lib"
export CPPFLAGS="-I/opt/local/include"
npm config set openssl-default-library /opt/local/lib/libssl.1.1.dylib
  • 重新启动项目:
npm start

常见问题解答

  1. 为什么会出现 ERR_OSSL_EVP_UNSUPPORTED 错误?
    这通常是由于 OpenSSL 版本过旧或配置不当造成的。

  2. 降级 Node.js 版本后,需要重新安装 npm 包吗?
    是的,建议重新安装所有 npm 包,以确保它们与较低版本的 Node.js 兼容。

  3. 更新 OpenSSL 后,需要重新启动哪些服务?
    您需要重新启动使用 OpenSSL 的任何服务,例如 Web 服务器和数据库。

  4. 我尝试了所有解决方案,但仍然无法解决错误,怎么办?
    您可以尝试在您的项目中添加 process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0 来禁用 TLS 验证。

  5. 还有什么其他预防 ERR_OSSL_EVP_UNSUPPORTED 错误的方法?
    确保保持 Node.js 和 OpenSSL 的最新版本,并定期检查是否有安全更新。