Вы получаете разные результаты ip, потому что вызов метода 2 ip.address()
использует разные сетевые интерфейсы.
Чтобы ip.address()
возвращал идентичный результат, вы можете передать имя сетевого интерфейса в качестве первого параметра, например, en0
:
const ip = require('ip');
console.log(ip.address('en0'));
p.s. Чтобы получить все текущие имена сетевых интерфейсов, можно использовать os.networkInterfaces()
.
Обновление: OP пытается получить IP-адрес в коде React на стороне браузера. Это миссия невыполнима. В противном случае это принесло бы огромные проблемы с безопасностью.
Обновление 2: OP не хочет сохранять IP-адрес конечной точки в коде внешнего интерфейса по соображениям безопасности, а также не хочет сначала извлекать IP-адрес (проблема с загрузкой сети). В этом случае вы можете сделать прокси на сервере. Все, что знает интерфейс, взаимодействует с текущим сервером, обмен данными осуществляется сервером как:
Браузер <-> Сервер <-> IP различных конечных точек
Шаги:
- Сервер (на котором размещен код веб-интерфейса) получает запрос от браузера
- Проверка сервера, какая конечная точка будет использоваться для этого клиента
- Сервер отправляет запрос на конкретную конечную точку
- Сервер получает ответ от конечной точки
- Сервер возвращает ответ в предыдущем шаге в браузер