解決:Node.js 版本更新后與 OpenSSL 不兼容導致的npm報錯“Error: error:0308010C:digital envelope routines::unsupported”
- 方法一:更改系統環境變量
- 方法二:更改項目環境變量
- 方法三:更換 Node.js 版本
- 方法四:升級依賴庫
- 方法五:調整應用程序代碼
方法一:更改系統環境變量
Windows 平臺:在命令行中運行 $env:NODE_OPTIONS="--openssl-legacy-provider"
命令,然后重啟即可。這種方式可以臨時解決,但需要每次啟動時都運行該命令。
方法二:更改項目環境變量
在 package.json 的 scripts 中新增SET NODE_OPTIONS=--openssl-legacy-provider
,這樣在運行 npm run dev 時會自動設置環境變量。
方法三:更換 Node.js 版本
卸載當前 Node.js 環境,并安裝 Node.js V17 或之前的版本,以避免 OpenSSL 3.0 帶來的兼容性問題。或者使用nvm切換node版本。
方法四:升級依賴庫
如果項目依賴于某些不再受支持的加密算法或庫,考慮升級這些依賴庫以獲得更好的兼容性和安全性
方法五:調整應用程序代碼
對于直接使用不支持的加密算法的應用程序代碼,考慮調整代碼以使用 OpenSSL 3.0 支持的算法