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

React Native Expo安卓模拟器无法访问localhost API问题求助

解决Expo安卓模拟器(NativeBase环境)访问本地localhost API的问题

这问题我碰到过好多次了,其实核心原因很简单——安卓模拟器里的localhost指的是它自己的虚拟系统,不是你运行API的电脑,所以直接请求localhost肯定连不上。给你几个靠谱的解决办法:

方法1:用电脑的LAN IP替换localhost

这是最通用的方案,不管是模拟器还是真机都能用:

  • 先找到你电脑在局域网内的IP地址:
    • Windows:打开命令提示符,运行ipconfig,找到「以太网适配器 本地连接」或「WLAN」下的IPv4 地址(格式一般是192.168.x.x)
    • Mac/Linux:打开终端,运行ifconfig或ip addr,找到对应网络接口(比如en0)下的inet地址
  • 修改你的API请求地址,把localhost换成这个LAN IP,比如原来的http://localhost:3000/api/users改成http://192.168.1.105:3000/api/users
  • 重要提醒:确保你的API服务监听的是0.0.0.0而不是默认的127.0.0.1,否则只能本地访问,局域网设备连不上。比如Node.js Express项目里,启动代码要写成:
    app.listen(3000, '0.0.0.0', () => {
      console.log('Server running on http://0.0.0.0:3000');
    });
    

方法2:用安卓模拟器专属映射地址10.0.2.2

安卓模拟器内置了一个特殊地址10.0.2.2,专门用来映射到主机的127.0.0.1,直接替换localhost就行:

  • 把请求地址改成http://10.0.2.2:3000/api,不用查LAN IP,简单快捷。不过这个方法只适用于安卓模拟器,真机没法用。

方法3:检查防火墙和网络配置

  • 确认你的电脑防火墙没有阻止API端口的入站请求,否则模拟器的访问会被拦截。可以暂时关闭防火墙测试,或者在防火墙规则里添加允许该端口的局域网访问权限。
  • 确保你的电脑和模拟器在同一个局域网内:启动Expo时选择LAN模式(默认就是LAN),Expo控制台会显示LAN地址,说明已经处于同一网络。

另外补充一句:NativeBase只是UI组件库,完全不影响网络请求的逻辑,所以问题本质还是Expo模拟器和本地主机的网络连通性,和UI框架无关~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:32:53