AdSense

網頁

2024/4/16

React 啟動出現ERR_OSSL_EVP_UNSUPPORTED錯誤

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

沒有留言:

AdSense