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 不兼容的問題。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Node.js全棧知識點超詳細整理(含代碼示例+前端結合實戰(zhàn))
在實時應用程序領域,Node.js非常適合構建聊天應用、實時協(xié)作工具、在線游戲等,通過Socket.IO、WebSocket等技術,能夠實現實時數據傳輸和雙向通信,這篇文章主要介紹了Node.js全棧知識點(含代碼示例+前端結合實戰(zhàn))的相關資料,需要的朋友可以參考下2026-06-06
nodejs 使用http進行post或get請求的實例(攜帶cookie)
今天小編就為大家分享一篇nodejs 使用http進行post或get請求的實例(攜帶cookie),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01

