【背景】
前几天本地开发碰到个bug,喊同事帮忙瞅瞅,他让我把开发环境的线上地址发给他,打开终端一看,这什么玩意??
【网上探索】
一开始也没找到是什么原因导致的,毕竟电脑除了日常开发工作,其他很少折腾,而这里原先是有局域网地址的,并且在探索的过程中,发现有不少小伙伴都遇到过这个问题,借此记录的机会,希望能帮到被困扰的小伙伴😄😄~~
【原因分析】
vue-cli服务启动的时候,会解析本地的ip地址,当做你开发环境的服务器地址,跟你在一个局域网的同事,通过这个地址,可以直接访问到你项目,现在既然network 显示为unavailable,也就是无法获取到,应该是网卡、系统环境变量,局域网中的一个环节出了问题,以下分为window和MacOS不同解决办法。
一定要看到最后!!!! 一定要看到最后!!!! 一定要看到最后!!!!
【解决办法】
window系统
1、禁用多余或者无效网卡
2、检查或者重新配置系统环境变量
配置完重启一下vscode,重跑项目,network有值了
MacOS系统
1、查看网络设置
选择中国,不要选自动,这里如果没有中国选项,点击下方编辑位置,添加一个就好了
2、重置网络
如果第一步操作完成,还是没有的话,试试重置一下Mac的网络设置,具体方法网上有很多,简单搜一下就好
【最后】
看到这里,一定有小伙伴疑惑,难道这么麻烦吗,必须要折腾系统吗?答案是不一定!NO! 也可以简单的在vue.config.js里面通过配置的方式,让network有值。具体怎么做呢?
devServer: { public: 'http://本机在局域网的ip:端口', }
没错,在devServer里面配置一个public就好,局域网ip必须对应本地的ip地址,端口随便一个未占用的都可以,6666,8888看你心情😄,到这里其实已经解决问题了,不过还有个场景就是,这样的话,ip地址毕竟是写死的,如果换了网络就GG了,能不能动态获取这个ip呢?当然是可以的!!! 借助node.js内置的os模块就可以办到,大量API可供使用
打印一下这个networkInterfaces瞅瞅
问题简单了,把上面devServer.public改写为os.networkInterfaces().en4[1].address,加上端口号,问题圆满解决😄😄😄