【问题标题】:External IP is not accessible outside the function in Node js在Node js中的功能之外无法访问外部IP
【发布时间】:2020-06-10 20:21:19
【问题描述】:

我是新来的。我正在尝试使用名为“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);

【问题讨论】:

  • 用'let'定义你的ip变量,并在你的函数之外进行
  • 成功了!谢谢。如果我可以问如果我返回IP怎么办?它会存储在 ipaddress 变量中吗?

标签: javascript node.js npm ip


【解决方案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;
});

let ip = ipaddress()
console.log(ip)

请注意,return 语句之后的任何内容都是死代码并且不会运行,因此您要运行的任何代码都应该放在任何 return 语句之前(注意 console.log() 在函数中的位置

【讨论】:

    【解决方案2】:

    这会起作用

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

    Edgar Cuarezma 的解决方案

    【讨论】:

    • 尽可能避免使用全局变量,这是不好的做法,如果你要在 javascript 中使用全局变量 in 应该是不可变的,这意味着你应该使用 const 而不是 @ 987654323@
    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2021-01-11
    • 2021-01-10
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多