无法启动React服务器:用Redux取MongoDB Atlas数据遇ERR_OSSL_EVP_UNSUPPORTED错误
解决ERR_OSSL_EVP_UNSUPPORTED构建错误导致页面空白的问题
这个错误是Node.js 17+版本与旧版webpack/react-scripts的兼容性问题,和你添加Redux从MongoDB取数据的逻辑本身无关——只是刚好在修改代码后触发了构建流程,暴露了这个隐藏的环境兼容问题。Node.js 17开始默认使用OpenSSL 3.0,而旧版webpack依赖的哈希算法不再被支持,导致构建失败,页面无法渲染。
快速临时解决
修改项目根目录package.json里的启动/构建脚本,添加兼容参数:
- macOS/Linux/WSL环境:
"scripts": { "start": "NODE_OPTIONS=--openssl-legacy-provider react-scripts start", "build": "NODE_OPTIONS=--openssl-legacy-provider react-scripts build" } - Windows CMD环境:
"scripts": { "start": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start", "build": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts build" }
修改后重新运行npm start,构建即可正常进行。
彻底根治(推荐)
升级依赖到兼容Node.js 17+的版本:
若使用Create React App,升级
react-scripts到v5及以上:npm install react-scripts@latest # 或yarn用户执行:yarn add react-scripts@latestReact Scripts v5已修复OpenSSL 3.0兼容问题,升级后无需额外配置。
若手动配置webpack,升级webpack到v5.60.0及以上:
npm install webpack@latest --save-dev # 或yarn用户执行:yarn add webpack@latest --dev新版webpack支持OpenSSL 3.0的哈希算法,从根源解决问题。
备选方案
如果不想修改依赖,可以把Node.js版本降级到16.x LTS(比如16.20.0),该版本默认使用OpenSSL 1.1.1,不会触发此错误。
内容的提问来源于stack exchange,提问作者Astha Negi
相关产品推荐
相关产品推荐

