Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在节点js中的函数外部访问外部IP_Javascript_Node.js_Npm_Ip - Fatal编程技术网

Javascript 无法在节点js中的函数外部访问外部IP

Javascript 无法在节点js中的函数外部访问外部IP,javascript,node.js,npm,ip,Javascript,Node.js,Npm,Ip,我是新来的。我尝试使用名为externalip的包获取外部IP,他们的示例中有这段代码 const getIP = require('external-ip')(); getIP((err, ip) => { if (err) { // every service in the list has failed throw err; } ip = ip;

我是新来的。我尝试使用名为externalip的包获取外部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 ipaddress;
getIP((err, ip) => {
          if (err) {
              // every service in the list has failed
              throw err;
          }
          ipaddress = ip;
});

console.log(ipaddress);
Edgar Cuarezma溶液

首先用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在函数中的位置

使用“let”定义ip变量,并在函数外部执行!谢谢如果我可以问一下,如果我返回ip怎么办?它会存储在ipaddress变量中吗?尽可能避免使用全局变量,这是一种不好的做法,如果要在中的javascript中使用全局变量,则应该是不可变的,这意味着您应该使用const而不是let