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

执行expo run:ios构建失败,生成的Swift文件存在错误

解决Expo + MongoDB Realm iOS构建与运行问题

一、处理expo run:ios的Swift语法错误(错误码65)

  • 对齐Swift版本:Realm SDK对Swift版本有明确要求,Expo默认配置可能不匹配。进入ios目录的Podfile,添加或修改如下配置:
    post_install do |installer|
      installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings['SWIFT_VERSION'] = '5.7' # 替换为Realm官方要求的对应版本
        end
      end
    end
    
    执行pod install --repo-update后重新运行expo run:ios。
  • 清理缓存与构建产物:
    • 清除Expo缓存:expo r -c
    • 删除ios目录下的build文件夹:rm -rf ios/build
    • 删除Pods相关文件:rm -rf ios/Pods ios/Podfile.lock
  • 校验版本兼容性:确认安装的Realm SDK版本与当前Expo SDK版本适配,版本不匹配是引发语法冲突的常见原因。

二、解决Xcode构建成功但连接开发服务器崩溃问题

  • 临时禁用Hermes引擎排查:在app.json中修改配置,切换到JSC引擎测试:
    "ios": {
      "jsEngine": "jsc"
    }
    
    若崩溃消失,说明Hermes与Realm存在兼容性问题,可尝试升级Realm或Expo版本解决。
  • 检查网络与端口配置:确保模拟器和开发服务器在同一网络,手动指定端口启动:expo start --port 8081,然后在模拟器中打开开发者菜单(Cmd+D),选择"Configure Bundler"输入正确的IP和端口。
  • 添加初始化日志定位崩溃点:在App启动阶段加入Realm初始化的日志输出,通过Xcode控制台查看崩溃前的异常信息:
    import Realm from 'realm';
    
    console.log('Initializing Realm...');
    try {
      const realm = await Realm.open({
        // 你的Realm配置内容
      });
      console.log('Realm initialized successfully');
    } catch (error) {
      console.error('Realm initialization error:', error);
    }
    

三、两种构建方式差异的核心原因

  • expo run:ios依赖Expo预配置脚本,默认启用Hermes、自动处理依赖,但在Swift版本、Pod配置细节上可能与Xcode手动构建不一致,导致语法错误。
  • Xcode手动构建时会读取本地Podfile和项目自定义设置,可能你之前调整过Swift版本等配置,所以构建成功,但缺少Expo开发服务器的适配逻辑(比如Hermes调试支持),进而引发连接服务器后的崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:20:27