React Native报node.js Transformer构建失败0308010C错误,set命令无效
解决方案
这个报错本质是Node.js v17及以上版本默认使用OpenSSL 3.0,而旧版本React Native依赖的构建工具不兼容新的OpenSSL加密规则导致,你之前执行的命令未生效可以按照以下步骤排查修复:
- 适配终端类型执行正确的环境变量命令
你之前使用的set NODE_OPTIONS=--openssl-legacy-provider仅适用于CMD终端,需注意必须在启动RN metro服务的同一个终端窗口执行,执行完成后再启动服务,不能跨窗口操作。
如果你使用的是PowerShell终端,需要替换为以下命令:
如果你使用的是Git Bash等类Unix终端,替换为:$env:NODE_OPTIONS="--openssl-legacy-provider"export NODE_OPTIONS=--openssl-legacy-provider - 永久配置环境变量避免每次手动输入
打开Windows 10的「编辑系统环境变量」面板,新建用户/系统变量,变量名填NODE_OPTIONS,变量值填--openssl-legacy-provider,配置完成后重启所有终端窗口,必要时重启操作系统即可永久生效。 - 改项目启动脚本自动加载配置
可以直接修改项目package.json中的启动脚本,不用手动敲环境变量命令:- 如果你仅在CMD终端运行,将scripts下的start配置改为:
"start": "set NODE_OPTIONS=--openssl-legacy-provider && react-native start" - 如果你需要兼容多终端,可以先安装跨环境变量工具
npm i cross-env -D,再将start配置改为:"start": "cross-env NODE_OPTIONS=--openssl-legacy-provider && react-native start"
- 如果你仅在CMD终端运行,将scripts下的start配置改为:
- 终极兼容方案
如果上述方法都不生效,要么将Node.js版本降级到16.x LTS版本(最稳定无兼容问题),要么将React Native版本升级到0.70及以上,新版本已经适配高版本Node的OpenSSL规则。
内容的提问来源于stack exchange,提问作者Danilikin
相关产品推荐
相关产品推荐

