1、開發 H5 時移動端,經常會使用真機進行調試本地環境、webpack 配置服務器好多腳手架寫的都是固定的,而在團隊開發中需要每人配置自己的本機 ip 進行開發,每次開啟開發環境的都需要修改,並且還不能提到 git ,太麻煩了,所以找了方法,動態獲取本機 ip 進行本地環境真機調試。
2、如果有其他人想看一下項目,難道每次都要打包發布一下才可以看到嗎?將 localhost 改成電腦 ip 地址,在同一局域網下就可以看到你本地的項目,並不需要打包發布。
解決方案:
- windows 系統打開終端輸入 ipconfig 可以查看電腦的IP地址;
- mac 系統打開終端輸入 ifconfig 可以查看電腦 ip;
但是每天 ip 發生變化這樣就很麻煩,每天都需要重新獲取,並且不能提交到 git,所以提供以下解決方案來獲取電腦 ip,使用 node 里的 os 模塊;
在 config 文件里的 index.js 里面加上以下代碼:
const os = require('os'); function getNetworkIp() { let needHost = ''; // 打開的host try { // 獲得網絡接口列表 let network = os.networkInterfaces(); for (let dev in network) { let iface = network[dev]; for (let i = 0; i < iface.length; i++) { let alias = iface[i]; if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) { needHost = alias.address; } } } } catch (e) { needHost = 'localhost'; } return needHost; }
然后將 dev 里的 host 改成 getNetworkIp() 即可,代碼如下:
dev: { assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: proxy, host: getNetworkIp(), port: 9528, autoOpenBrowser: true, errorOverlay: true, notifyOnErrors: false, poll: false, useEslint: true, showEslintErrorsInOverlay: false, devtool: 'source-map', cssSourceMap: false }
其他用法:
os.EOL
定義操作系統一行結束的標識的常量。
os.arch()
返回操作系統 CPU 架構,可能的值有 “x64”、“arm” 和 “ia32”。
os.cpus()
返回一個數組對象,包括CPU的型號、速度、時間等。
os.endianness()
返回 CPU 的字節序,可能的是 “BE” 或 “LE”。
Little endian:將低序字節存儲在起始地址。
Big endian:將高序字節存儲在起始地址。
os.freemem()
返回操作系統空閑內存,單位是字節。
os.homedir()
返回當前用戶的主目錄。
os.hostname()
返回操作系統的主機名。
os.loadavg()
返回一個包含 1、5、15 分鍾平均負載的數組。
os.platform()
返回操作系統平台。
os.release()
返回操作系統的發行版本。
os.tmpdir()
返回操作系統默認的臨時文件目錄。
os.totalmem()
返回系統內存總量,單位為字節。
os.type()
返回操作系統名稱。
os.uptime()
返回操作系統運行的時間,以秒為單位。