启动React Native项目连接Android模拟器时报8081端口占用EADDRINUSE错误
报错原因
EADDRINUSE错误代表React Native默认使用的8081端口(Metro打包服务的默认监听端口)已经被其他进程占用,常见占用进程包括未正常关闭的旧Metro进程、Web服务、虚拟机后台进程等。
解决方案
方案1:终止占用8081端口的进程(推荐)
根据你使用的操作系统执行对应命令即可:
- Windows系统(你当前使用的系统)
- 执行命令查询占用8081端口的进程PID:
netstat -ano | findstr :8081 - 命令返回结果最后一列的数字就是对应进程的PID,执行以下命令终止进程(替换示例中的
1234为你查询到的实际PID):taskkill /PID 1234 /F
- 执行命令查询占用8081端口的进程PID:
- macOS/Linux系统
- 执行命令查询占用8081端口的进程PID:
sudo lsof -i :8081 - 找到PID后执行以下命令终止进程(替换示例中的
1234为实际PID):sudo kill -9 1234
- 执行命令查询占用8081端口的进程PID:
进程终止后重新执行npx react-native start即可正常启动服务。
方案2:更换Metro服务监听端口
如果占用8081端口的进程无法终止,可以手动指定其他端口启动Metro服务:
- 启动服务时添加端口参数,示例使用8082端口:
npx react-native start --port 8082 - 打开Android模拟器的调试菜单:可执行命令
adb shell input keyevent 82调出,或者手动摇一摇模拟器 - 选择
Settings->Debug server host & port for device,填写localhost:8082后保存,重新加载应用即可。
内容的提问来源于stack exchange,提问作者Anas Raghib
相关产品推荐
相关产品推荐

