You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Expo Go连接Metro bundler失败:无法解析.exp.direct主机地址

Expo Go连接Metro bundler失败:无法解析.exp.direct主机地址

我之前也碰到过一模一样的问题,折腾了好一阵才搞定,给你分享几个亲测有效的解决办法,你可以挨个试试:

1. 把网络基础问题抠细(你已经做了部分,补几个容易忽略的细节)

  • 确认PC和手机的WiFi是完全同网段:比如PC连的是路由器5GHz频段,手机别连2.4GHz的——有些路由器双频名字相似但实际是不同网段,这是很容易踩的坑。
  • 重新测试ping连通性:在手机上装个终端类APP(比如Termux),执行 ping 192.168.1.X(把X换成你PC的局域网IP),如果还是不通,那问题肯定在PC的网络设置上,和Expo本身关系不大。
    • 检查PC的WiFi适配器:右键任务栏WiFi图标→打开网络和Internet设置→更改适配器选项→右键当前WiFi→属性→Internet协议版本4(TCP/IPv4),确保是“自动获取IP地址”,别手动设置了和路由器不匹配的网段。
    • 重启路由器:有时候路由器的DHCP缓存或者ARP表出问题,重启一下能解决很多莫名其妙的局域网连接故障。

2. 手动指定Metro的网络接口,避免自动选择出错

有时候Metro会自动绑定到错误的网络接口(比如PC同时连了有线和无线,它选了有线IP但手机连的是无线),可以强制指定:

  • 在项目根目录创建或修改 metro.config.js,添加以下配置:
const { getDefaultConfig } = require('expo/metro-config');

const config = getDefaultConfig(__dirname);

config.server = {
  port: 8081,
  // 替换成你的PC局域网IP,比如192.168.1.105
  host: '192.168.1.X',
};

module.exports = config;
  • 然后重启Metro并清除缓存:执行 npx expo start --clear,旧缓存可能会导致新配置不生效。
  • 之后在Expo Go里手动输入 exp://192.168.1.X:8081 试试连接。

3. 排查端口和Expo隧道服务的问题

  • 检查端口占用:在PC命令行执行 netstat -ano | findstr :8081,如果有其他进程占用8081端口,就换个端口启动,比如 npx expo start --port 19000
  • 重置Expo账号关联的隧道服务:执行 npx expo logout 然后 npx expo login,重新登录你的Expo账号,有时候账号绑定的隧道解析服务会出小问题,重置后能恢复。

4. 关闭Windows的网络隔离设置

Windows的“公用网络”配置会限制局域网设备连接,即使你关了防火墙也没用:

  • 打开Windows设置→网络和Internet→WiFi→点击当前连接的WiFi名称→下拉找到“网络配置文件类型”,确保设置为专用
  • 另外,有些杀毒软件的“局域网防护”功能是独立于系统防火墙的,比如360、McAfee这类,暂时完全关闭杀毒软件再测试连接。

5. 终极 workaround:用USB连接调试(最稳定)

如果以上方法都不管用,试试USB连接,完全绕开WiFi的问题:

  • 先在手机上开启开发者选项USB调试(一般是连续点击系统版本号7次开启开发者选项,然后在里面找到USB调试开关打开)。
  • 用原装USB线连接PC和手机,确保PC安装了对应品牌的手机驱动(比如小米的Mi PC Suite、华为的HiSuite,或者直接用Windows自动安装的驱动)。
  • 执行 npx expo start --usb,然后打开Expo Go,选择“USB连接”或者扫描终端里的QR码,基本都能成功连上。

内容来源于stack exchange

火山引擎 最新活动