You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native iOS端构建失败 RCTTurboModuleManager.mm编译报错

macOS Monterey下React Native iOS构建失败排查

问题现象

在搭载macOS Monterey的设备上执行npx react-native run-ios命令时构建失败,报错信息如下:

** BUILD FAILED **
     
    The following build commands failed:
            CompileC /Users/prashanth/Library/Developer/Xcode/DerivedData/myapp-akpvurjcnemajucrerqjfkzzxnng/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/ReactCommon.build/Objects-normal/x86_64/RCTTurboModuleManager.o /Users/prashanth/Documents/REPO/app/node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm normal x86_64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler (in target 'ReactCommon' from project 'Pods')
    (1 failure)

现有环境与配置

  • Podfile配置:
    • iOS最低支持版本:platform :ios, '9.0'
    • TurboModule依赖配置:pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
  • 工具版本:
    • Node:15.14.0
    • React Native:0.62.2
    • Xcode:13.4.1

修复步骤

这个报错的核心原因是React Native 0.62.2发布时间远早于Xcode 13.4.1,新旧版本存在编译器兼容、部署目标不匹配的问题,按以下顺序操作即可修复:

  1. 调高iOS最低部署版本
    Xcode 13已不再支持iOS 9的编译目标,打开项目ios目录下的Podfile,将首行的platform :ios, '9.0'修改为platform :ios, '12.4'。
  2. 添加Pod编译配置修正逻辑
    在Podfile最末尾添加如下post_install钩子,自动修正Pods依赖的编译参数,避免C++/OC语言标准不匹配、部署目标过低的问题:
    post_install do |installer|
      installer.pods_project.targets.each do |target|
        # 单独给ReactCommon设置兼容编译参数
        if target.name == "ReactCommon"
          target.build_configurations.each do |config|
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
            config.build_settings['CLANG_CXX_LANGUAGE_STANDARD'] = 'c++17'
            config.build_settings['GCC_C_LANGUAGE_STANDARD'] = 'gnu11'
          end
        end
        # 统一修正所有依赖的最低部署版本
        target.build_configurations.each do |config|
          if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 12.4
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
          end
        end
      end
    end
    
  3. 全量清理缓存后重新构建
    在项目根目录依次执行以下命令,清除旧的编译缓存和依赖后重新构建:
    • 清除Xcode派生数据:rm -rf ~/Library/Developer/Xcode/DerivedData/*
    • 进入ios目录清除旧依赖:cd ios && rm -rf Pods Podfile.lock build
    • 重新安装Pod依赖:pod install --repo-update
    • 返回根目录重新执行构建:cd .. && npx react-native run-ios

如果完成以上步骤后依然报相同编译错误,手动打开node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm文件,给所有调用RCTBridgeModuleNameForClass方法的位置增加空值判断即可——Xcode 13的clang编译器对OC空值校验更严格,旧版RN代码缺失判空逻辑会直接触发编译失败。

内容的提问来源于stack exchange,提问作者Gnana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 20:27:16