无法在Node js中的函数外部访问外部IP

时间:2020-02-26 21:22:27

标签: javascript node.js npm ip

我是新来的。我正在尝试使用名为“ external-ip”的程序包来获取外部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 个答案:

答案 0 :(得分:1)

首先用let定义ip

ip是在程序的本地范围内定义的,这意味着只能在函数中访问它。现在,您应该避免使用全局范围,因为通常认为这是不好的做法,但这是从程序中任何位置访问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()在函数中的位置

答案 1 :(得分:0)

这将起作用

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

console.log(ipaddress);

Edgar Cuarezma的解决方案