Expo应用为何默认用localhost:8081启动?改端口及隧道均无法连开发客户端
解决Expo端口固定及Dev Client连接失败问题
一、强制修改Expo启动端口的有效操作
使用完整端口指定命令
之前的命令格式可能有误,正确的端口指定命令应该是:npx expo start --port 8000 # 或指定19000端口 npx expo start --port 19000执行后看终端输出,确认是否显示
Metro is running on http://localhost:8000类信息,若仍为8081,说明缓存或配置在起作用。清除Metro缓存再启动
缓存会导致端口配置不生效,执行以下命令清除缓存后重新启动:npx expo start --port 8000 --clear修改项目配置文件固定端口
在项目根目录的app.json或app.config.js中添加端口配置,确保启动时自动使用指定端口:{ "expo": { "packagerOpts": { "port": 8000 } } }保存后重新执行
npx expo start,端口即可生效。
二、Dev Client无法连接服务器的排查方案
局域网模式下确认网络一致性
不用隧道模式时,确保手机/模拟器和电脑连同一WiFi,启动Expo时添加--lan参数:npx expo start --port 8000 --lan终端会显示局域网地址(如
http://192.168.x.x:8000),在Dev Client中输入该地址尝试连接。隧道模式问题排查
- 暂时关闭电脑防火墙,排查是否是防火墙拦截了Expo的网络请求。
- 更换网络环境(比如手机热点),部分公司内网会屏蔽Expo隧道服务,导致连接失败。
- 重启Dev Client和Expo服务,进程残留可能引发连接异常。
确保Dev Client与Expo SDK版本匹配
如果你的Expo SDK版本更新过,需要重新构建Dev Client,保证版本匹配:npx expo prebuild --clean npx expo run:android # 或run:ios,根据你的设备选择切换隧道提供商
若隧道模式报错Failed to establish tunnel,可以切换隧道提供商,先安装ngrok:npm install -g ngrok再用ngrok启动隧道:
npx expo start --tunnel --tunnel-provider ngrok
内容的提问来源于stack exchange,提问作者Relie Essom
相关产品推荐
相关产品推荐

