Внешний IP не доступен вне функции в Node js - PullRequest
0 голосов
/ 27 февраля 2020

Я новичок здесь. Я пытаюсь получить внешний IP-адрес с помощью пакета с именем "external-ip". У них есть этот код в их примере

const getIP = require('external-ip')(); 
getIP((err, ip) => {
          if (err) {
              // every service in the list has failed
              throw err;
          }
          ip = ip;
          console.log(ip);
});

Он работает отлично, однако я хочу использовать IP вне функции, может я знаю, как можно Я использую это?

Я пробовал это, но у меня не получилось

const ipaddress = getIP((err, ip) => {
          if (err) {
              // every service in the list has failed
              throw err;
          }
          return ip;
          console.log(ip);
});

console.log(ipaddress);

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Сначала определите ip с помощью let

ip определяется в локальной области вашей программы, что означает, что она доступна только в вашей функции. Теперь вам следует избегать использования глобальной области видимости в максимально возможной степени, поскольку это обычно считается плохой практикой, но это один из способов сделать varaible ip доступным из любой точки вашей программы. Другим способом было бы вернуть его

const getIP = require('external-ip')(); 
const ipaddress = getIP((err, ip) => {
          if (err) {
              // every service in the list has failed
              throw err;
          }
          console.log(ip);
          return ip;
});

ip = ipaddress()
console.log(ip)

Обратите внимание, что все, что после оператора return является мертвым кодом и не будет выполняться, поэтому любой код, который вы хотите запустить, должен быть помещен перед любым оператором return (обратите внимание на позицию console.log () в функции

0 голосов
/ 27 февраля 2020

Это будет работать

let ipaddress;
getIP((err, ip) => {
          if (err) {
              // every service in the list has failed
              throw err;
          }
          ipaddress = ip;
});

console.log(ipaddress);

Решение Эдгара Куарезмы

...