如果你使用 Node.js 和命令行界面解決方案,如 Webpack、create-react-app 或 vue-cli-service,你可能已經遇到了這個錯誤,Error: error:0308010c:digital envelope routines::unsupported
.
你并不孤單,因為我現在也遇到了:
React 應用程序確實未能啟動:
在這篇文章中,你將學習如何通過 3 種方式來解決這個錯誤。但首先,讓我們討論一下導致該錯誤的原因。
什么原因導致 “0308010c:digital envelope routines::unsupported” 的錯誤?
你遇到這個錯誤的可能原因主要有兩個:
- 你沒有使用 Node JS 的 LTS(長期支持)版本。你可以看到我使用的是 Node 17.0.0,這不是 Node 的 LTS 版本。
- 你使用的 react-script 的版本小于 5。
這個錯誤也可能發生,因為你使用的是Node 17。
如何解決 “0308010c:digital envelope routines::unsupported” 的錯誤
你至少有 3 種方法可以解決這個錯誤。我們將一個一個地看。任何一個都應該對你有用。
將 --openssl-legacy-provider 傳遞給 Webpack 或 CLI 工具
例如,在 React 應用程序中,你可以將 --openssl-legacy-provider
傳遞給啟動腳本,如 "react-scripts --openssl-legacy-provider start"
。
這應該就可以了。但是,如果這不能修復錯誤,那么就進行下一個修復。在許多情況下,它是有效的。
使用 Node JS 的 LTS 版本
考慮將你的 Node 版本降級到 16.16.0 或其他 LTS 版本。
目前,Node 的最新 LTS 版本是 18.12.1。你可以從 Node JS 官方網站下載它,或者使用 NVM 來安裝它。
將 React 腳本升級到 5 以上版本
如果你正在使用 React,而這仍然無法為你解決錯誤,那么這很可能是你的 React 腳本的問題。
如果你使用的 React 腳本版本低于 5,那么你應該把它升級到 5+ 版本。
就我而言,我目前使用的是 react-scripts 3.4.3:
要將 react-scripts 升級到 5+,你可以通過兩種方式進行:
卸載并重新安裝 react-scripts
- 打開終端,運行
npm uninstall react-scripts
- 運行
npm install react-scripts
手動改變 react 腳本的版本
- 進入你的
package.json
,將 react-script 版本改為 5.0.2 - 通過運行
rm –rf node_modules
刪除 node_modules 文件夾 - 通過運行
rm –rf package.lock.json
來刪除 package.lock.json 文件 - 運行
npm install
或yarn add
,這取決于你所使用的軟件包管理器
在將 react-scripts 的版本升級到 5+ 之后,我的 React 應用程序現在可以正常工作了:
總結
正如上文指出的,如果你收到 “0308010c:digital envelope routines::unsupported” 的錯誤,那么可能是你沒有使用 Node JS 的 LTS 版本,或者你使用的 react-scripts 版本小于 5。
希望我們在本教程中討論的修復方法能幫助你解決這個錯誤。如果其中一個修復方法不起作用,那么你可以嘗試其他方法。在我的例子中,將 react-scripts 升級到 5 以上就行了。