如何解决React Native Web中的error:0308010C相关错误
解决error:0308010C:digital envelope routines::unsupported错误
这个错误是因为Node.js v17及以上版本默认禁用了旧版OpenSSL哈希算法,而你的Expo Web依赖仍在使用这些算法。以下是几种可行的解决方法:
方法1:修改Web启动脚本,添加OpenSSL兼容参数
根据你的操作系统,修改package.json中的web脚本,加入--openssl-legacy-provider Node选项:
Windows系统
"scripts": { // ... 其他脚本 "web": "SET NODE_OPTIONS=--openssl-legacy-provider && expo start --web" }
Mac/Linux系统
"scripts": { // ... 其他脚本 "web": "NODE_OPTIONS=--openssl-legacy-provider expo start --web" }
修改后重新执行npm run web即可启动Web应用。
方法2:升级Expo相关依赖(推荐)
如果不想依赖旧版OpenSSL算法,建议升级Expo及其Web相关依赖到最新版本,新版本通常已适配Node.js v20的要求:
npm install expo@latest expo-webpack-config@latest
或者使用yarn:
yarn add expo@latest expo-webpack-config@latest
升级完成后再尝试启动Web应用。
额外提示
你的start脚本存在语法错误:"expo start, react-app-rewired start --openssl-legacy-provider "中的逗号应该替换为&&(串行执行)或&(并行执行),否则会导致脚本执行失败,建议修正为:
"start": "expo start && react-app-rewired start --openssl-legacy-provider"
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

