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

WSL2环境下运行Expo,手机无法连接的问题求助

解决WSL2环境下手机连接Expo的局域网访问问题

我之前也踩过WSL2 + Expo的这个网络坑,核心原因是WSL2默认用NAT网络模式,手机作为局域网设备没法直接访问WSL内部的eth0 IP——哪怕你设置了REACT_NATIVE_PACKAGER_HOSTNAME,只要端口没映射到Windows主机的局域网IP上,手机还是连不通。下面给你两个不用依赖tunnel的靠谱解决方案:

方案一:端口转发(保留WSL默认网络)

这个方法不用改动WSL的默认网络配置,通过Windows的端口转发把WSL的Expo端口映射到主机的局域网IP上:

  1. 获取关键IP地址

    • 在Windows的CMD/PowerShell里执行ipconfig,找到你的无线/有线网卡的IPv4地址(比如192.168.3.10),这是手机要访问的目标地址。
    • 在WSL终端里执行ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1,拿到WSL2的eth0内部IP(比如172.17.0.2)。
  2. 配置Expo主机名
    在WSL终端里临时设置环境变量:

    export REACT_NATIVE_PACKAGER_HOSTNAME=你的Windows局域网IP
    

    如果想永久生效,把这条命令加到shell配置文件里:

    echo 'export REACT_NATIVE_PACKAGER_HOSTNAME=你的Windows局域网IP' >> ~/.bashrc
    source ~/.bashrc
    

    (用zsh的话就修改~/.zshrc)

  3. 设置Windows端口转发
    打开管理员权限的PowerShell,执行以下命令转发Expo默认的三个核心端口:

    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=19000 connectaddress=你的WSL2内部IP connectport=19000
    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=19001 connectaddress=你的WSL2内部IP connectport=19001
    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=19002 connectaddress=你的WSL2内部IP connectport=19002
    
  4. 放行防火墙端口
    同样在管理员PowerShell里执行,允许这些端口的入站连接:

    New-NetFirewallRule -DisplayName "Expo TCP Ports" -Direction Inbound -LocalPort 19000,19001,19002 -Protocol TCP -Action Allow
    New-NetFirewallRule -DisplayName "Expo UDP Ports" -Direction Inbound -LocalPort 19000,19001,19002 -Protocol UDP -Action Allow
    
  5. 启动Expo并连接手机
    执行expo start,确保手机和Windows主机在同一个局域网里,扫码或者手动输入exp://你的Windows局域网IP:19000就能正常连接了。

方案二:切换WSL2到桥接模式(更省心)

如果不想每次都做端口转发,可以把WSL2改成桥接模式,让它直接获取局域网IP:

  1. 关闭WSL
    在Windows PowerShell里执行:

    wsl --shutdown
    
  2. 修改WSL网络配置
    打开%USERPROFILE%\.wslconfig文件(如果没有就新建一个),添加以下内容:

    [wsl2]
    networkMode=bridge
    vmSwitch=你的网卡名称
    

    这里的vmSwitch要填你实际用的网卡名称,可以在Hyper-V管理器的“虚拟交换机管理器”里找到对应的桥接交换机名称(一般是物理网卡的名字)。

  3. 重启WSL
    重新打开WSL终端,执行ip addr就能看到WSL已经拿到和Windows同网段的局域网IP了。

  4. 配置Expo并连接
    把REACT_NATIVE_PACKAGER_HOSTNAME设为WSL的新局域网IP,启动expo start后,手机直接扫码就能连接,不用额外做端口转发。


内容的提问来源于stack exchange,提问作者Sayyed Alireza Rezaei Asl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:32:58