获取节点中的本地 IP 地址.js

2022-08-29 23:27:54

我的计算机上运行着一个简单的Node.js程序,我想获取运行我的程序的PC的本地IP地址。如何使用 Node.js 获取它?


答案 1

此信息可以在 os.networkInterfaces() 中找到— 一个对象,它将网络接口名称映射到其属性(例如,一个接口可以有多个地址):

'use strict';

const { networkInterfaces } = require('os');

const nets = networkInterfaces();
const results = Object.create(null); // Or just '{}', an empty object

for (const name of Object.keys(nets)) {
    for (const net of nets[name]) {
        // Skip over non-IPv4 and internal (i.e. 127.0.0.1) addresses
        // 'IPv4' is in Node <= 17, from 18 it's a number 4 or 6
        const familyV4Value = typeof net.family === 'string' ? 'IPv4' : 4
        if (net.family === familyV4Value && !net.internal) {
            if (!results[name]) {
                results[name] = [];
            }
            results[name].push(net.address);
        }
    }
}
// 'results'
{
  "en0": [
    "192.168.1.101"
  ],
  "eth0": [
    "10.0.0.101"
  ],
  "<network name>": [
    "<ip>",
    "<ip alias>",
    "<ip alias>",
    ...
  ]
}
// results["en0"][0]
"192.168.1.101"

答案 2

运行程序来解析结果似乎有点麻烦。这是我使用的。

require('dns').lookup(require('os').hostname(), function (err, add, fam) {
  console.log('addr: ' + add);
})

这将返回您的第一个网络接口本地 IP 地址。