在使用 npm run
時,有時候可能會遇到 ERR_OSSL_EVP_UNSUPPORTED
錯誤。這通常是由於 Node.js 17 版本中新發布的 OpenSSL3.0 對演算法與金鑰進行了一些限制所導致的。該問題的根源可以追溯到 Node.js 17.0.0 版本的發布,其中對 OpenSSL3.0 的更新引入了相容性問題。
Node.js 17.0.0 Release Notes 中提到:
“The OpenSSL library has been updated to 3.0.0. This introduces a number of changes and new features, but it also means that some old cryptographic algorithms and keys may no longer be supported. Applications relying on older, insecure cryptographic practices may need to be updated.”
簡而言之,Node.js 17.0.0 版本引入了 OpenSSL3.0 的更新,這些更新帶來了一些變化和新功能,但也導致了一些舊的加密演算法和金鑰不再受支援。這可能會導致 ERR_OSSL_EVP_UNSUPPORTED
錯誤。
以下提供一些解決方法,以及相關的說明。
方法一:升級 Node.js 版本
確保你的 Node.js 版本是最新的,這可以解決 OpenSSL3.0 對演算法與金鑰的限制問題。
# 使用 nvm 安裝最新版本 nvm install node # 切換到最新版本 nvm use node
原因: ERR_OSSL_EVP_UNSUPPORTED
錯誤通常是由於 Node.js 17 版本中新發布的 OpenSSL3.0 對演算法與金鑰進行了一些限制所導致。
方法二:升級 React.js 版本
如果你的專案是基於 React.js,考慮升級 React.js 版本。新版本可能已經針對 Node.js 17 的 OpenSSL3.0 進行了相應的修復。
# 更新 React.js 至最新版本 npm install react@latest
原因: 特定版本的 React.js 可能與 Node.js 17 有相容性問題,升級 React.js 可以解決這些問題。
方法三:升級 Vue.js 版本
如果你的專案是基於 Vue.js,考慮升級 Vue.js 版本。新版本可能已經針對 Node.js 17 的 OpenSSL3.0 進行了相應的修復。
# 更新 Vue.js 至最新版本 npm install vue@latest
原因: 特定版本的 Vue.js 可能與 Node.js 17 有相容性問題,升級 Vue.js 可以解決這些問題。
方法四:臨時解決辦法 – 使用 NODE_OPTIONS
設定
如果不想升級 Node.js 或相關框架,可以使用 NODE_OPTIONS
環境變數設定,降低 OpenSSL 版本。這是一種臨時的解決辦法。
Linux
export NODE_OPTIONS=--openssl-legacy-provider
Windows
set NODE_OPTIONS=--openssl-legacy-provider
原因: 這是因為 NODE_OPTIONS=--openssl-legacy-provider
參數可以使 Node.js 使用較舊的 OpenSSL 版本,暫時繞過相容性問題。
這樣,當使用者執行 npm start
時,將自動使用 --openssl-legacy-provider
參數來啟動應用程序,解決 ERR_OSSL_EVP_UNSUPPORTED
錯誤。
請注意,使用 NODE_OPTIONS=--openssl-legacy-provider
是臨時性的解決方案,建議最終還是升級相關的軟體版本,以確保與最新版本的 Node.js 相容。
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!