React Native 0.61.4项目编译故障:Metro启动后无法构建应用求助
解决React Native 0.61.4 + Node.js 20.x的ERR_OSSL_EVP_UNSUPPORTED及构建触发问题
问题分析
你的核心矛盾是老版本React Native(0.61.4)与高版本Node.js(20.6.0)的兼容性冲突:Node.js 17+默认启用了新的OpenSSL哈希算法,而RN0.61.4配套的Metro版本不支持该算法,导致编译报错。虽然添加--openssl-legacy-provider能启动Metro,但构建命令未继承该Node参数,所以无法触发应用构建。
解决方案
方案1:为所有构建命令添加Node参数
将package.json里的所有scripts命令都加上NODE_OPTIONS=--openssl-legacy-provider,确保构建过程也使用旧版OpenSSL兼容模式:
{ "scripts": { "start": "set NODE_OPTIONS=--openssl-legacy-provider && react-native start", "android": "set NODE_OPTIONS=--openssl-legacy-provider && react-native run-android", "ios": "set NODE_OPTIONS=--openssl-legacy-provider && react-native run-ios", "test": "jest" } }
操作步骤:
- 修改
package.json后保存 - 关闭所有已打开的终端窗口
- 重新打开终端,执行
npm start启动Metro - 另开一个终端,执行
npm run android或npm run ios触发构建
方案2:降级Node.js到兼容版本(更稳定)
React Native 0.61.4官方推荐的Node.js版本为12.x~14.x LTS,用版本管理器切换到兼容版本能彻底解决这类兼容性问题:
- 安装nvm-windows(Windows系统)或nvm(Mac/Linux)来管理Node版本
- 执行命令安装兼容版本:
nvm install 14.21.3 # 14.x LTS的最新稳定版 - 切换到该版本:
nvm use 14.21.3 - 清理旧依赖并重新安装:
# Windows系统执行 del /s /q node_modules && del package-lock.json # Mac/Linux系统执行 rm -rf node_modules package-lock.json npm install - 正常启动项目:
npm start,再执行构建命令
验证要点
- 确保所有终端都使用了带有
NODE_OPTIONS的命令,或已切换到兼容的Node版本 - 启动Metro后,构建命令需在新终端执行,避免环境变量冲突
内容的提问来源于stack exchange,提问作者Fido el pepino
相关产品推荐
相关产品推荐

