didi / chameleon

🦎 一套代码运行多端,一端所见即多端所见
http://cml.didi.cn/
Apache License 2.0
9.02k stars 692 forks source link

调试工具效果预览页使用的ip地址不够严谨 #504

Open libmw opened 3 years ago

libmw commented 3 years ago

bug描述 执行cml dev后自动打开的preview.html页面使用了require('ip').address()的方式获取ip,但是这个ip并不一定是开发者需要的ip。 开发者需要的ip应该是和手机wifi在同一个网络中的那个ip地址,当用户有多张网卡的时候,require('ip').address()返回的很可能不是用户想要的那个网卡的地址。

复现bug的步骤

  1. 在开发机上配置多张网卡(可以是虚拟网卡)
  2. 执行cml dev
  3. 打开的地址是虚拟网卡的地址而不是和手机在同一网络的无线网卡的地址,此时手机端的Chameleon Playground App扫描二维码无法访问。

问题截图 image

编译环境信息

运行环境信息

jimwmg commented 3 years ago

欢迎能提供解决方案和我们一起共建

zhuyifang commented 3 years ago

tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下 10.0.0.0/8:10.0.0.0~10.255.255.255 172.16.0.0/12:172.16.0.0~172.31.255.255 192.168.0.0/16:192.168.0.0~192.168.255.255 绝大部分都是 192,所以针对这个问题,就很好办了, 最后再加一个IP配置项,这样就够灵活和方便