2012-05-25 47 views
55

我不是指如何獲取Node.js中的本地IP地址?

127.0.0.1

反倒是其他計算機將使用例如訪問本機的一個

192.168.1.6

+1

您是否搜索谷歌? http://forum.webfaction.com/viewtopic.php?id=4500 – Nick

+0

http://stackoverflow.com/a/3654601/1202784 – lfergon

+0

[在node.js中獲取本地IP地址](http:// stackoverflow.com/questions/3653065/get-local-ip-address-in-node-js) – alessioalex

回答

95

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); 
+6

對於那些搜索interwebz的人來說,這個通常被稱爲網絡IP。 – jonathanberi

+2

我採用了這種技術,並將其封裝到稱爲接口地址的模塊中。看看這裏https://github.com/nisaacson/interface-addresses – Noah

+1

只是爲了理解,爲什麼有多個IP地址?當我用gulp運行它時,得到:'en0','vnic0','vnic01'。 'en0'是一個瀏覽器同步顯示給我的。 –

82

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

var ip = require("ip"); 
console.dir (ip.address()); 
+3

我希望我可以再次upvote ... – theonlygusti

+1

這是最短的解決方案 –

+8

事實上,如果你只需要IP,這個解決方案比接受的長度大380線,因爲你需要包含'node-ip' – wacko

8
$ npm install --save quick-local-ip 

通過

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

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

//getting ip6 network address of local system 
myip.getLocalIP6(); 
5

我的版本,這需要一個緊湊和單個文件的腳本,希望能對他人有用:

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); 

或回答原來的問題:

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; 
+0

那些loooooong 1-liners正在殺死我。寧願它多行&縮進。性感的解決方案。 –

+1

沒問題。完成:) –