React Native启动报错ERR_OSSL_EVP_UNSUPPORTED求助
解决React Native启动时
ERR_OSSL_EVP_UNSUPPORTED错误 针对你遇到的启动报错(Failed to construct transformer: Error: error:0308010C:digital envelope routines::unsupported),以下是经过验证的解决方法:
方法1:启动时添加OpenSSL兼容参数
该参数让Node.js使用旧版OpenSSL哈希算法,适配旧版Metro的缓存逻辑:
- macOS/Linux:
若使用yarn:NODE_OPTIONS=--openssl-legacy-provider npm startNODE_OPTIONS=--openssl-legacy-provider yarn start - Windows(PowerShell):
$env:NODE_OPTIONS="--openssl-legacy-provider"; npm start - Windows(CMD):
set NODE_OPTIONS=--openssl-legacy-provider && npm start
方法2:修改package.json启动脚本(永久生效)
把启动命令固定添加兼容参数,避免每次手动输入:
"scripts": { "start": "NODE_OPTIONS=--openssl-legacy-provider react-native start", "android": "NODE_OPTIONS=--openssl-legacy-provider react-native run-android", "ios": "NODE_OPTIONS=--openssl-legacy-provider react-native run-ios" }
如果需要跨平台兼容(同时支持Windows和类Unix系统),先安装cross-env:
npm install cross-env --save-dev
再修改脚本:
"scripts": { "start": "cross-env NODE_OPTIONS=--openssl-legacy-provider react-native start", "android": "cross-env NODE_OPTIONS=--openssl-legacy-provider react-native run-android", "ios": "cross-env NODE_OPTIONS=--openssl-legacy-provider react-native run-ios" }
方法3:清除Metro缓存
缓存损坏可能导致兼容问题,执行以下命令重置缓存:
npx react-native start --reset-cache
或手动删除缓存目录:
rm -rf node_modules/.cache/metro-cache
方法4:适配RN 0.64.2的Node版本
RN 0.64.2官方推荐Node.js 12.x~14.x,使用nvm管理版本更稳妥:
# 安装Node 14.18.0(该版本与RN 0.64.2兼容性最佳) nvm install 14.18.0 # 切换到该版本 nvm use 14.18.0 # 重新安装依赖 rm -rf node_modules package-lock.json yarn.lock npm install
内容的提问来源于stack exchange,提问作者Даниил Лазарев
相关产品推荐
相关产品推荐

