如何在Node.js中获取本地IP地址?

del*_*ber 62 node.js

我不是指

127.0.0.1

而是其他计算机用来访问机器的那个,例如

192.168.1.6

sep*_*010 114

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

var os = require('os');

var interfaces = os.networkInterfaces();
var addresses = [];
for (var k in interfaces) {
    for (var k2 in interfaces[k]) {
        var address = interfaces[k][k2];
        if (address.family === 'IPv4' && !address.internal) {
            addresses.push(address.address);
        }
    }
}

console.log(addresses);
Run Code Online (Sandbox Code Playgroud)

  • 对于那些搜索interwebz的人来说,这通常被称为网络IP. (7认同)
  • 我采用了这种技术并将其包装到一个名为interface-addresses的模块中.在这里查看https://github.com/nisaacson/interface-addresses (2认同)
  • 只是为了理解,为什么有多个IP地址?当我用gulp运行时,我得到:`en0`,`vnic0`,`vnic01`.`en0`是我显示的一个browsersync. (2认同)

Jan*_*ůna 98

https://github.com/indutny/node-ip

var ip = require("ip");
console.dir ( ip.address() );
Run Code Online (Sandbox Code Playgroud)

  • 事实上,如果你只需要IP,这个解决方案比接受的解决方案长约380行,因为你需要包含`node-ip` (10认同)
  • @wacko:那么,它是什么,它提供了一个简洁的api.由于它在服务器380上运行,因此库中的loc不值得一提.它也没有自己的依赖,这是很好的. (3认同)

Ebr*_*owi 9

我的版本是紧凑的单文件脚本所需要的,希望对其他人有用:

var ifs = require('os').networkInterfaces();
var result = Object.keys(ifs)
  .map(x => [x, ifs[x].filter(x => x.family === 'IPv4')[0]])
  .filter(x => x[1])
  .map(x => x[1].address);
Run Code Online (Sandbox Code Playgroud)

或者回答原始问题:

var ifs = require('os').networkInterfaces();
var result = Object.keys(ifs)
  .map(x => ifs[x].filter(x => x.family === 'IPv4' && !x.internal)[0])
  .filter(x => x)[0].address;
Run Code Online (Sandbox Code Playgroud)


Alo*_* G. 8

$ npm install --save quick-local-ip
Run Code Online (Sandbox Code Playgroud)

跟着

var myip = require('quick-local-ip');

//getting ip4 network address of local system
myip.getLocalIP4();

//getting ip6 network address of local system
myip.getLocalIP6();
Run Code Online (Sandbox Code Playgroud)


the*_*ram 5

https://github.com/dominctarr/my-local-ip

$ npm install -g my-local-ip
$ my-local-ip
Run Code Online (Sandbox Code Playgroud)

或者

$ npm install --save my-local-ip
$ node
> console.log(require('my-local-ip')())
Run Code Online (Sandbox Code Playgroud)

一个非常小的模块,可以做到这一点。