Ionic 3+Angular 5真机运行报错net:ERR_CONNECTION_REFUSED求助
这个问题我之前帮不少开发者解决过,本质是真机和你的开发服务器之间的网络连通性出了问题,咱们一步步来排查解决:
先确认设备和电脑在同一局域网
你的真机必须和开发电脑连接同一个Wi-Fi(或者电脑开热点让真机连)。打开电脑的命令提示符/终端,用ping命令测试两者的连通性:比如输入ping 你的真机IP,如果丢包或者超时,说明网络不通。这时候要检查路由器设置、电脑防火墙是否拦截了连接,或者换个Wi-Fi环境试试。启动Ionic时绑定正确的网络地址
默认的ionic serve可能只绑定了localhost,真机访问不到。你需要让服务器监听所有网卡的地址,或者直接指定电脑的局域网IP:# 监听所有网卡,真机可以通过电脑的局域网IP访问 ionic serve --address 0.0.0.0 --port 8100 # 或者直接指定你的电脑局域网IP(就是报错里的192.168.8.101) ionic serve --address 192.168.8.101 --port 8100检查电脑防火墙/杀毒软件的拦截
Windows防火墙、Mac的防火墙或者第三方杀毒软件可能会阻止8100端口的入站连接。你可以临时关闭防火墙测试,如果真机能正常访问了,记得在防火墙上添加规则:允许8100端口的TCP入站连接,这样以后就不用每次关防火墙了。用Ionic官方的真机调试命令替代serve
其实没必要手动处理IP,直接用ionic cordova run android -lcs命令,它会自动把应用部署到真机,同时建立livereload和日志同步,真机上的应用会自动连接到正确的开发服务器地址,省去手动配置IP的麻烦。这里的参数含义:-l是实时重载,-c是显示控制台日志,-s是显示服务器日志。用USB反向代理绕开IP问题
如果你的真机是通过USB线连接电脑调试的,可以用adb命令做端口反向代理:adb reverse tcp:8100 tcp:8100执行这个命令后,真机上访问
localhost:8100就会转发到电脑的8100端口。这时候你正常启动ionic serve,真机里的应用就能正常连接服务器了,不用管局域网IP的问题。检查config.xml的网络权限
确保你的项目根目录下的config.xml里有<access origin="*" />这个标签,它允许应用访问所有网络资源。如果有特定的origin限制,记得把你的开发服务器IP(192.168.8.101:8100)添加进去。
按照上面的步骤排查,应该能解决这个连接拒绝的问题。
内容的提问来源于stack exchange,提问作者hubert

