vue 項目使用 webpack 構建自動獲取電腦ip地址


1、開發 H5 時移動端,經常會使用真機進行調試本地環境、webpack 配置服務器好多腳手架寫的都是固定的,而在團隊開發中需要每人配置自己的本機 ip 進行開發,每次開啟開發環境的都需要修改,並且還不能提到 git ,太麻煩了,所以找了方法,動態獲取本機 ip 進行本地環境真機調試。
2、如果有其他人想看一下項目,難道每次都要打包發布一下才可以看到嗎?將 localhost 改成電腦 ip 地址,在同一局域網下就可以看到你本地的項目,並不需要打包發布。

解決方案:

  1. windows 系統打開終端輸入 ipconfig 可以查看電腦的IP地址;
  2. 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()
返回操作系統運行的時間,以秒為單位。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM