Node js獲取本地ip地址


使用webpack 和 vue進行本地開發的時候,可能會遇到讓同在局域網的同事訪問。。。我們在config/index.js文件中配置的dev環境一般情況如下:

proxyTable: {
   '/apis': {
        target: `http://公網ip`,
        changeOrigin: true,
        // secure: false,  //target默認情況下,不接受運行在HTTPS上,且使用了無效證書的后端服務器。如果你想要接受, 則需設置該項為false
        pathRewrite: {
          '^/apis': ''
        },
        ws: true
    },
},
host: '0.0.0.0',  // can be overwritten by process.env.HOST

port: 80, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined

我們前端訪問頁面就是 http://localhost ,我們訪問后端接口是用 localhost域名訪問的(webpack會給我們代理轉發請求,不會出現跨域)。

如果同事訪問你的頁面,只能通過你的局域網ip地址進行訪問, 比如你的地址是 172.16.79.192,你的同事訪問這個地址,頁面訪問正常,但是訪問接口回報跨域(172.16.79.192和localhost).

這時候你可以改config/index.js文件中的host為你的ip,然后在改訪問后端接口為你的ip,重新啟動項目,然后你的同事才可以正常訪問和使用。。。

我們仔細想一下,如果在啟動的時候,將上面的解決方案搞定,可不可行呢?當然可以。。。我們可以在項目啟動前,用在node獲取你的電腦的局域網地址,分別賦值即可,下面貼一段node獲取本地ip地址的代碼:

const os = require('os');

/**
 * 獲取當前機器的ip地址
 */
function getIpAddress() {
  var ifaces=os.networkInterfaces()

  for (var dev in ifaces) {
    let iface = ifaces[dev]

    for (let i = 0; i < iface.length; i++) {
      let {family, address, internal} = iface[i]

      if (family === 'IPv4' && address !== '127.0.0.1' && !internal) {
        return address
      }
    }
  }
}

let ipAddress = getIpAddress()
console.log(ipAddress)

最后附上我測試的截圖:

 

 參考資料:

  http://nodejs.cn/api/os.html#os_os_networkinterfaces

 


免責聲明!

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



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