You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地React应用启动报错error:0308010C:digital envelope routines::unsupported求助

解决Node.js 18下React启动报错error:0308010C:digital envelope routines::unsupported

问题详情

执行npm run start启动本地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 (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/webpack/lib/util/createHash.js:90:53)
    at NormalModule._initBuildHash (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/webpack/lib/NormalModule.js:386:16)
    at handleParseError (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/webpack/lib/NormalModule.js:434:10)
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/webpack/lib/NormalModule.js:466:5
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/webpack/lib/NormalModule.js:327:12
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at iterateNormalLoaders (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:236:3
    at runSyncOrAsync (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
    at iterateNormalLoaders (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:232:2)
    at Array.<anonymous> (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/react-scripts/scripts/start.js:19
  throw err;
  ^

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 (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/webpack/lib/util/createHash.js:90:53)
    at NormalModule._initBuildHash (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/webpack/lib/NormalModule.js:386:16)
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/webpack/lib/NormalModule.js:418:10
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/webpack/lib/NormalModule.js:293:13
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:233:18
    at context.callback (/Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at /Users/parasnagpal0707/Documents/Projects/StalkHub/node_modules/babel-loader/lib/index.js:51:103 {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

项目依赖配置:

{
  "name": "github-search",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@auth0/auth0-react": "^1.12.0",
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "axios": "^1.2.1",
    "fusioncharts": "^3.19.0",
    "node-polyfill-webpack-plugin": "^2.0.1",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-fusioncharts": "^4.0.0",
    "react-icons": "^4.7.1",
    "react-router-dom": "^5.2.0",
    "react-scripts": "^5.0.1",
    "styled-components": "^5.3.6",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "CI= react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "webpack": "^5.79.0"
  }
}

已尝试方案:

  • 将react-scripts改为legacy provider
  • 多次执行npm audit --fix force
    问题仍未解决。

解决方案

方法1:临时启用OpenSSL兼容性模式

修改package.json中的scripts字段,添加NODE_OPTIONS=--openssl-legacy-provider环境变量:

"scripts": {
  "start": "NODE_OPTIONS=--openssl-legacy-provider react-scripts start",
  "build": "CI= NODE_OPTIONS=--openssl-legacy-provider react-scripts build",
  "test": "react-scripts test",
  "eject": "react-scripts eject"
}

保存后重新执行npm run start即可。

方法2:升级react-scripts到最新兼容版本

react-scripts 5.0.1对Node.js 18的兼容性不足,升级到最新稳定版:

npm install react-scripts@latest --save

升级完成后重新执行npm run start。

方法3:切换Node.js版本到兼容版

使用nvm切换到Node.js 16(长期支持版,兼容性更好):

nvm install 16
nvm use 16

切换版本后重新执行npm run start。

问题原因

Node.js 17及以上版本默认使用OpenSSL 3.0,而旧版webpack(或react-scripts依赖的webpack版本)使用的哈希算法在OpenSSL 3.0中被标记为不安全,导致兼容性错误。

内容的提问来源于stack exchange,提问作者Paras Nagpal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:24:55