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