在Node js中的功能之外无法访问外部IP
Posted
技术标签:
【中文标题】在Node js中的功能之外无法访问外部IP【英文标题】:External IP is not accessible outside the function in Node js 【发布时间】: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 变量中吗? 【参考方案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@以上是关于在Node js中的功能之外无法访问外部IP的主要内容,如果未能解决你的问题,请参考以下文章