我有一个简单的Node.js程序在我的机器上运行,我想获得我的程序正在运行的PC的本地IP地址。我如何在Node.js中获得它?
当前回答
根据注释,以下是当前版本Node.js的工作原理:
var os = require('os');
var _ = require('lodash');
var ip = _.chain(os.networkInterfaces())
.values()
.flatten()
.filter(function(val) {
return (val.family == 'IPv4' && val.internal == false)
})
.pluck('address')
.first()
.value();
上面一个答案的注释缺少对values()的调用。看起来os.networkInterfaces()现在返回一个对象而不是数组。
其他回答
使用内部ip:
const internalIp = require("internal-ip")
console.log(internalIp.v4.sync())
我写了一个Node.js模块,通过查看包含默认网关的网络接口来确定您的本地IP地址。
这比从os.networkInterfaces()或DNS查找主机名更可靠。它可以忽略VMware虚拟接口、环回接口和VPN接口,它可以在Windows、Linux、Mac OS和FreeBSD上工作。在底层,它执行route.exe或netstat并解析输出。
var localIpV4Address = require("local-ipv4-address");
localIpV4Address().then(function(ipAddress){
console.log("My IP address is " + ipAddress);
// My IP address is 10.4.4.137
});
安装一个名为ip的模块,如下:
npm install ip
然后使用下面的代码:
var ip = require("ip");
console.log(ip.address());
你可以通过使用os模块找到你机器的任何IP地址-这是Node.js的本机:
var os = require('os');
var networkInterfaces = os.networkInterfaces();
console.log(networkInterfaces);
你所需要做的就是调用os.networkInterfaces(),你会得到一个容易管理的列表——比按联盟运行ifconfig要简单。
Use:
var os = require('os');
var networkInterfaces = os.networkInterfaces();
var arr = networkInterfaces['Local Area Connection 3']
var ip = arr[1].address;