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

React Native iOS编译报错:重复符号_OBJC_METACLASS_$_RCTWebSocketModule

解决iOS React Native打包时的重复符号错误

嘿,咱们来拆解你遇到的这个重复符号问题——这在React Native + CocoaPods的项目里是个常见坑,从你提供的错误信息和Podfile来看,核心原因很明确,咱们一步步解决:

问题根源分析

你看到的_OBJC_METACLASS_$_RCTWebSocketModule这类重复符号,还有arm64架构下的284个重复项,最直接的原因是你的Podfile里重复写了两遍完全一样的target 'clustr'配置!这会让CocoaPods重复引入所有依赖库,自然就会出现符号冲突。另外,虽然你注释掉了React的RCTWebSocket子库,但像react-native-mapbox-gl这类第三方库可能间接依赖了它,也会和React核心库的代码产生重复。

分步解决步骤

  1. 删掉重复的Target配置
    打开你的Podfile,把完全重复的那一段target 'clustr'代码删掉,只保留一份就行。修复后的Podfile应该是这样:

    # Uncomment the next line to define a global platform for your project
    # platform :ios, '9.0'
    target 'clustr' do
      # Flexbox Layout Manager Used By React Native
      pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga/Yoga.podspec'
      # React Native
      pod 'React', path: '../node_modules/react-native', subspecs: [
        # Comment out any unneeded subspecs to reduce bundle size.
        'Core',
        # 'DevSupport',
        # 'RCTActionSheet',
        # 'RCTAnimation',
        # 'RCTBlob',
        # 'RCTCameraRoll',
        ## 'RCTGeolocation',
        ## 'RCTImage',
        ## 'RCTNetwork',
        # 'RCTPushNotification',
        ## 'RCTSettings',
        # 'RCTTest',
        ## 'RCTText',
        ## 'RCTVibration',
        ## 'RCTWebSocket',
        ## 'RCTLinkingIOS'
      ]
      # OneSignal
      # pod 'OneSignal', '~> 1.13.3'
      # Mapbox
      pod 'react-native-mapbox-gl', :path => '../node_modules/@mapbox/react-native-mapbox-gl'
      pod 'Stripe', '~> 10.1.0'
      inherit! :search_paths
    end
    
  2. 彻底清理缓存和旧构建产物
    光改Podfile还不够,得把之前残留的重复依赖清干净,执行下面的命令:

    # 删除Pod锁文件和Pods目录
    rm -rf Podfile.lock Pods
    # 清理Xcode的派生数据(这步很重要,避免旧的编译产物干扰)
    rm -rf ~/Library/Developer/Xcode/DerivedData
    # 重新拉取依赖并安装
    pod install --repo-update
    
  3. 处理第三方库的间接依赖冲突(可选)
    如果做完上面两步还有RCTWebSocket相关的重复符号,那说明react-native-mapbox-gl间接引入了这个库,和React核心库的版本不统一。可以在Podfile末尾加一段配置,强制让第三方库使用你项目里的React依赖:

    post_install do |installer|
      installer.pods_project.targets.each do |target|
        if target.name == 'react-native-mapbox-gl'
          target.dependency 'React/RCTWebSocket', :path => '../node_modules/react-native'
        end
      end
    end
    

    加完后重新跑一遍pod install。

  4. 验证修复效果
    打开Xcode,先点Product > Clean Build Folder(快捷键Cmd+Shift+K),然后再尝试Archive或者构建项目,重复符号的错误应该就消失了。

小提醒

以后编辑Podfile的时候要注意别不小心复制粘贴重复的配置段,另外React的subspec尽量按需注释,减少不必要的代码引入,也能降低冲突概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:13:08