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

React Native&Expo问题:模拟器无法发起网络请求且热重载失效

Expo React Native 模拟器/设备网络请求失效、热重载故障解决指南

问题概述

使用Expo开发React Native应用时,遇到以下异常:

  • iOS/Android模拟器及实体设备均无法发起网络请求,应用能正常加载但网络功能完全失效,JS调试器控制台和网络面板无任何请求记录
  • 热重载功能无法刷新应用
  • 浏览器中运行应用一切正常,fetch请求、热重载均正常工作
  • 未修改过Expo或Metro的配置文件,已尝试常规缓存清理、版本回退、模拟器重装等操作,但均无效果

已尝试的无效操作清单:

  • 重启、卸载重装模拟器
  • 回退至之前可正常运行的Git提交
  • 删除本地所有文件并从正常提交重新初始化项目
  • 执行缓存清理命令:watchman watch-del-all、rm -rf node_modules、npx expo start --localhost、npm cache clean
  • 执行其他命令:rm -f ./.git/index.lock、npx expo r -c、npm start --reset-cache

针对性排查与解决方法

1. 调整Metro网络绑定模式

Metro默认的地址绑定可能导致模拟器无法访问,尝试强制指定全局IP或局域网IP启动服务:

# 绑定所有可用网络接口
npx expo start --host 0.0.0.0

# 或手动指定你的局域网IP(替换为实际IP,比如192.168.1.100)
npx expo start --host 192.168.1.100

启动后在模拟器中重新加载应用,检查网络请求和热重载是否恢复。

2. 重置模拟器网络代理设置

模拟器的代理配置可能干扰Metro连接:

  • iOS模拟器:进入「设置」-「Wi-Fi」,点击当前网络旁的「i」图标,确认「HTTP代理」设置为「关闭」(若无需代理)
  • Android模拟器:进入「设置」-「网络和互联网」-「Wi-Fi」,长按当前网络选择「修改网络」,勾选「显示高级选项」,将「代理」设置为「无」

3. 排查防火墙/安全软件拦截

本地防火墙或杀毒软件可能拦截了Metro默认端口(8081),暂时关闭这类软件,重新启动Expo服务后测试功能。

4. 重置Expo设备配对与开发者工具

  • 关闭所有Expo相关进程(Metro终端、Expo Go应用)
  • 在模拟器中卸载Expo Go,重新安装最新版本
  • 执行npx expo login --logout退出账号,重新登录后再启动服务配对设备

5. 重置Metro配置文件

即使未手动修改配置,也可能存在隐性配置问题,创建最简配置文件覆盖默认:

// metro.config.js
const { getDefaultConfig } = require('expo/metro-config');

const config = getDefaultConfig(__dirname);

module.exports = config;

保存后重启Metro服务。

6. 验证模拟器与Metro的网络连通性

在模拟器中直接访问Metro服务地址,检查是否能正常连接:

  • iOS模拟器:用Safari打开http://localhost:8081或你的局域网IP:8081
  • Android模拟器:用自带浏览器打开上述地址
    如果无法访问,说明网络连通性存在问题,需进一步排查本地网络设置。

7. 切换Node.js版本至兼容版本

Node.js版本不兼容可能导致Metro异常,使用nvm切换到项目推荐版本:

# 安装并切换到Node.js 18(可替换为package.json中engines指定的版本)
nvm install 18
nvm use 18

# 重新安装依赖并重置缓存启动
rm -rf node_modules package-lock.json
npm install
npx expo start --reset-cache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:30:08