Подтвердить что ты не робот

Как получить локальный IP-адрес в Node.js?

Я не имею в виду

127.0.0.1

Но скорее тот, который другие компьютеры будут использовать для доступа к машине, например.

192.168.1.6

4b9b3361

Ответ 1

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

Ответ 3

Моя версия, которая была необходима для компактного и одиночного файла script, надеется быть полезной для других:

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;

Ответ 4

$ npm install --save quick-local-ip

после

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

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

$ npm install -g my-local-ip
$ my-local-ip

или

$ npm install --save my-local-ip
$ node
> console.log(require('my-local-ip')())

Очень маленький модуль, который делает именно это.

Ответ 6

Начиная с версии 0.9.6 узла существует простой способ получить IP-адрес сервера на основе каждого запроса. Это может быть важно, если ваша машина имеет несколько IP-адресов или даже если вы что-то делаете на локальном хосте.

req.socket.localAddress вернет адрес машинного узла, на котором работает, на основе текущего соединения.

Если у вас публичный IP-адрес 1.2.3.4 и кто-то req.socket.localAddress вашему серверу узлов извне, тогда значение для req.socket.localAddress будет "1.2.3.4".

Если вы нажмете на тот же сервер от localhost, то адрес будет "127.0.0.1"

Если ваш сервер имеет несколько общедоступных адресов, то значение req.socket.localAddress будет правильным адресом сокетного соединения.