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

React Native iOS真机通过Xcode无法连接Metro Bundler问题

React Native 0.55.4 iOS真机连接Metro Bundler失败的解决方案

针对你遇到的闪屏、无法连接打包工具,以及日志里的NSURLConnection错误-1001/-999、TCP连接失败、RCTCxxModule警告这些问题,我整理了几个针对性的排查和解决步骤:

1. 确保真机与Mac的网络连通性

  • 首先确认你的iOS真机和Mac处于同一个局域网(比如连同一个WiFi,或者Mac连有线、手机连同网段的WiFi)
  • 手动指定Bundler的IP地址:
    • 打开Xcode项目中的Info.plist,添加NSAppTransportSecurity字典,在其中新增NSAllowsArbitraryLoads并设置为YES(解决HTTP加载限制)
    • 修改AppDelegate.m中的jsCodeLocation,把默认的localhost替换成你的Mac局域网IP,示例:
      jsCodeLocation = [NSURL URLWithString:@"http://192.168.1.100:8081/index.bundle?platform=ios&dev=true"];
      
    • 或者启动项目时直接指定主机:react-native run-ios --device --host=你的Mac局域网IP

2. 排查Metro Bundler的运行状态

  • 检查8081端口是否被占用:终端执行lsof -i :8081,如果有其他进程占用,杀死进程后重启Bundler
  • 重置Bundler缓存并重启:终端执行npm start --reset-cache(或yarn start --reset-cache),确保Bundler完全重启
  • 用真机的Safari测试网络:访问http://你的MacIP:8081/index.bundle?platform=ios&dev=true,如果能下载bundle文件,说明网络通路正常;如果不能,检查Mac防火墙是否拦截了8081端口,或者路由器是否有隔离设置

3. 处理RCTCxxModule未导出警告

  • 这个警告在RN 0.55.x版本属于常见的兼容性问题,一般不影响连接,但可以通过以下步骤消除:
    • 清理Xcode缓存:点击Xcode顶部菜单Product -> Clean Build Folder,然后删除Derived Data(路径:Xcode偏好设置 -> Locations -> Derived Data,点击箭头打开文件夹后删除对应项目的文件夹)
    • 重新安装依赖:删除项目根目录的node_modules文件夹,执行npm install,再运行react-native link(如果有需要链接的原生模块)

4. 其他排查方向

  • 确认Xcode版本兼容性:RN 0.55.4适配Xcode 9.x,你用的9.3是符合要求的,但要确保Command Line Tools是对应版本(Xcode偏好设置 -> Locations -> Command Line Tools选择Xcode 9.3)
  • 测试离线打包:先打包本地bundle验证项目本身是否正常,执行命令:
    react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/main.jsbundle --assets-dest ios/assets
    
    然后修改AppDelegate.m加载本地bundle:
    jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
    
    如果离线包能正常运行,说明问题集中在网络连接;如果还是不行,检查项目的原生模块配置是否有冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:27:39