React Native启动报错:端口3000占用/换端口无法连接求助
解决React Native端口冲突&无法连接服务器问题
我之前也碰到过一模一样的坑!给你几个亲测有效的解决办法,按顺序试试:
清理Metro缓存(最优先尝试)
有时候Metro的缓存会搞出“假端口占用”的乌龙,明明端口没被进程占用却报错。先把缓存清干净再启动:npx react-native start --reset-cache启动时可以直接指定新端口,一步到位:
npx react-native start --port 3001 --reset-cache用更精准的工具排查端口占用
系统自带的netstat有时候会漏掉一些隐藏进程,试试这些工具:- Windows:打开「任务管理器→性能→打开资源监视器→网络→监听端口」,这里能看到所有正在监听的端口和对应进程,包括一些后台隐藏的。
- macOS/Linux:用
lsof命令,比netstat更靠谱:
如果查到进程,用lsof -i :3000kill -9 <PID>杀掉(把<PID>换成查到的进程号)。
修改Metro核心配置(别只改package.json)
只改package.json里的scripts往往没用,Metro有自己的独立配置文件。在项目根目录找metro.config.js,没有的话就新建一个,添加端口配置:module.exports = { server: { port: 3001, // 换成你想用的端口 }, };保存后重启Metro,它会默认使用你指定的端口。
排查设备/模拟器的网络连接问题
换端口后连不上localhost,大概率是网络映射的问题:- Android模拟器:执行
adb reverse tcp:3001 tcp:3001,把电脑的端口映射到模拟器内部。 - 真机:确保手机和电脑连同一个WiFi,别用localhost,改用电脑的局域网IP(比如
http://192.168.1.100:3001),在项目里调整连接地址。 - iOS模拟器:试试重启模拟器,或者检查模拟器的网络是否和电脑共享。
- Android模拟器:执行
终极方案:重启系统/调整防火墙
有时候系统的网络栈会抽风,重启电脑能解决很多莫名其妙的端口问题。另外可以暂时关闭防火墙,看看是不是防火墙阻止了React Native的网络请求。
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

