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

iOS Simulator(Expo Go)连接本地Docker化API时出现域名解析失败(错误码-1003)的排查求助

iOS Simulator(Expo Go)连接本地Docker化API时出现域名解析失败(错误码-1003)的排查求助

各位技术大佬好!我最近碰到个特别头疼的问题,折腾了好几天都没解决,希望能得到大家的指点:

之前我的React Native + Expo Go项目,用iOS模拟器连接本地Docker里的PHP API已经正常跑了一年多,最近突然开始报错,提示找不到指定主机名。奇怪的是,同团队的其他同事用一模一样的配置完全没问题,我怀疑是macOS或者Xcode更新导致的,但回滚Xcode版本也没效果,也没找到系统安全设置里有异常的地方。

错误详情

模拟器抛出的核心错误日志如下:

Error: Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found."
UserInfo={... NSErrorFailingURLURLStringKey=https://loc-api.pfi.local/v3/login, ...}

这明显说明模拟器环境里loc-api.pfi.local这个域名的DNS解析失败了。

我的技术栈

API服务端

  • PHP 8.2 编写的API,部署在Docker容器中,使用Traefik作为反向代理

移动端

  • React Native + Expo Go
  • 配套使用React Native Paper、Redux状态管理

模拟器异常表现

  • 模拟器能正常连接外部的预发布/生产环境API,没有任何问题
  • 唯独连接https://loc-api.pfi.local时直接失败
  • 本地API服务用其他方式都能正常访问:Mac主机的浏览器、Postman都能正常调用接口,完全无异常

已尝试的排查方案(及结果)

我把能想到的办法都试了一遍,但都没解决问题:

  • 防火墙检查:确认macOS系统防火墙已经完全关闭
  • API服务可用性验证:Docker里的API确实在运行,Mac主机的浏览器/Postman访问https://loc-api.pfi.local完全正常;终端执行ping loc-api.pfi.local能正确解析到127.0.0.1,ping包也能正常返回
  • 模拟器重置操作:
    • 对出问题的模拟器执行了「Erase All Content and Settings...」
    • 删除模拟器后通过Xcode的「Devices and Simulators」重新添加
    • 执行xcrun simctl erase all清空所有模拟器数据
  • 缓存清理:
    • 执行yarn clear:all && yarn install清空所有依赖和项目缓存
    • 多次重启Metro bundler(yarn start),每次都等模拟器完全启动后再操作
  • DNS缓存刷新:在终端执行sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder刷新Mac的DNS缓存
  • Hosts文件检查:确认/etc/hosts里loc-api.pfi.local指向127.0.0.1的配置正确,文件权限也无异常
  • 网络工具干扰排查:确认没有开启VPN或代理工具,排除了这类工具的影响
  • Docker环境重置:停止并删除了Traefik容器和关联网络,执行docker system prune -f清理后重新部署Traefik和API容器,问题依旧存在

我想请教的问题

现在的情况是:Mac主机上所有方式都能正常解析并访问loc-api.pfi.local,模拟器却唯独解析失败,而且其他同事的同款配置完全正常。有没有什么macOS系统层面,或者Xcode/iOS模拟器特有的网络配置,会导致这种模拟器内部DNS解析异常的情况?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 08:20:30