React Native + Xcode 14.2 无法归档构建,指定OPENSSL旧版提供者仍无效
解决React Native + Xcode 14.2构建归档时的ERR_OSSL_EVP_UNSUPPORTED错误
让Xcode正确读取NODE_OPTIONS环境变量
终端单独执行export NODE_OPTIONS=--openssl-legacy-provider后,Xcode不会自动继承这个变量。试试这两种方式:- 先在终端执行上述命令,接着输入
open -a Xcode从终端启动Xcode,这样构建时就能拿到这个变量。 - 直接在Xcode项目里加构建变量:进入项目的Build Settings,搜索Environment Variables,新增一条,键填
NODE_OPTIONS,值填--openssl-legacy-provider。
- 先在终端执行上述命令,接着输入
修改package.json的构建脚本
如果是通过npm/yarn脚本触发归档,把环境变量直接嵌到脚本里:{ "scripts": { "build:ios": "NODE_OPTIONS=--openssl-legacy-provider xcodebuild -workspace YourApp.xcworkspace -scheme YourApp -configuration Release archive" } }之后用
npm run build:ios或者yarn build:ios来执行归档操作。临时降级Node.js版本
这个错误本质是Node.js 17+的OpenSSL加密算法变更导致的,要是上面的方法都没用,降级到Node.js 16.x LTS版本试试。用nvm管理版本的话:- 执行
nvm install 16安装16.x版本 - 执行
nvm use 16切换到该版本
再重新尝试构建归档。
- 执行
排查Metro配置冲突
检查metro.config.js里的自定义配置,比如自定义transformer是否和当前Node.js版本不兼容。可以先换成默认配置测试,排除配置层面的问题。
内容的提问来源于stack exchange,提问作者lreddy
相关产品推荐
相关产品推荐

