React啟動時出現ERR_OSSL_EVP_UNSUPPORTED
錯誤無法啟動。
環境:
- macOS Ventura 13.0.1
- Node.js v18.12.0
- react 18.2.0
問題
啟動React專案時出現錯誤如下:
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at module.exports (/../react-demo/app/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/../react-demo/app/node_modules/webpack/lib/NormalModule.js:417:16)
at /../react-demo/app/node_modules/webpack/lib/NormalModule.js:452:10
at /../react-demo/app/node_modules/webpack/lib/NormalModule.js:323:13
at /../react-demo/app/node_modules/loader-runner/lib/LoaderRunner.js:367:11
at /../react-demo/app/node_modules/loader-runner/lib/LoaderRunner.js:233:18
at context.callback (/../react-demo/app/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
at /../react-demo/app/node_modules/babel-loader/lib/index.js:59:103 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
問題在於Node.js 17開始預設使用OpenSSL 3.0,所使用的金鑰大小不支援專案或開發工具所使用的。
解決
解決方式一是更新Node.js到最新版本。
解決方式二是在React專案的package.json
的啟動script加上--openssl-legacy-provider
即可。
package.json
{
...
"scripts": {
"start": "react-scripts --openssl-legacy-provider start",
"build": "react-scripts --openssl-legacy-provider build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
...
}
或輸入NODE_OPTIONS=--openssl-legacy-provider npm start
來啟動React專案。
% NODE_OPTIONS=--openssl-legacy-provider npm start
沒有留言:
張貼留言