Expo与React Native、Android Studio构建失败问题求助
Expo React Native 项目 Android 模拟器加载失败(unexpected end of stream)解决指南
问题背景
搁置一月的Expo React Native项目重新运行时出现版本更新错误,将package.json升级至最新版本后,Android Studio模拟器无法加载项目,卸载重装工具、新建项目后问题依旧,核心报错为:Uncaught Error: java.io.IOException: unexpected end of stream on http://192.168.50.19:8081/...
环境信息
- 开发终端:PowerShell + Node.js
- Android 虚拟设备:Pixel 3(系统Oreo 8.1,SDK Android 8.1、Android API 34)
解决方案
1. 严格遵循Expo CLI弃用后的命令规范
Expo CLI已正式弃用,必须全程使用npx执行Expo相关命令,解决命令链不兼容问题:
- 修复依赖版本冲突:
npx expo install --fix - 排查环境配置问题:
npx expo doctor - 指定IP和端口启动项目,避免网络路由异常:
npx expo start --host 0.0.0.0 --port 8081 - 模拟器手动绑定Dev Server:打开开发者菜单(Ctrl+M)→ 选择
Configure Bundler→ 输入http://192.168.50.19:8081
2. 降级至稳定兼容的Expo SDK版本
部分旧SDK版本已被弃用,跨版本升级易引发兼容性问题,建议降级至SDK 49(当前稳定支持版本):
- 修改
package.json中的核心依赖:{ "dependencies": { "expo": "~49.0.21", "react": "18.2.0", "react-native": "0.72.10" }, "devDependencies": { "@babel/core": "^7.20.0", "@expo/webpack-config": "^19.0.0" } } - 清理旧依赖并重新安装:
PowerShell执行:Remove-Item -Recurse -Force node_modules Remove-Item package-lock.json npm cache clean --force npx expo install
3. 解决网络与端口阻塞问题
unexpected end of stream报错多由网络连接中断或端口占用导致:
- 检查8081端口占用情况:
netstat -ano | findstr :8081,杀死占用进程:taskkill /PID <进程ID> /F - 切换模拟器网络模式为桥接,确保与主机处于同一局域网
- 临时关闭主机防火墙或添加8081端口的允许规则
- 重置模拟器网络设置:模拟器内进入「设置→系统→重置→重置网络设置」
4. 重新生成Android原生项目文件
升级后原生配置可能未同步,强制重新生成:
- 执行:
npx expo prebuild --clean - 打开Android Studio,等待Gradle自动同步,或手动点击「Sync Project with Gradle Files」
- 确认Android SDK API 34的Build Tools、Platform Tools已完整安装
验证流程
- 运行
npx expo doctor确保所有环境依赖通过检查 - 启动项目
npx expo start,在模拟器中手动连接Dev Server - 查看Metro终端日志,确认是否存在未解决的依赖或编译错误
内容的提问来源于stack exchange,提问作者Fiddle Freak
相关产品推荐
相关产品推荐

