Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Node.js 如何获取运行NodeJS服务器的计算机的IP地址,以便在react应用程序中使用?_Node.js_Reactjs_Api - Fatal编程技术网

Node.js 如何获取运行NodeJS服务器的计算机的IP地址,以便在react应用程序中使用?

Node.js 如何获取运行NodeJS服务器的计算机的IP地址,以便在react应用程序中使用?,node.js,reactjs,api,Node.js,Reactjs,Api,我想得到运行NodeJS服务器的计算机的IP地址,以便在React应用程序中使用服务器的正确URL 例如,当我取一个“http://localhost:/api“从同一网络中的另一个设备,它无法工作 我试图手动提供计算机IP地址,但过了一段时间,一两天,IP发生了变化,然后我不得不再次打开“提供IP地址” 所以,我想问的是,是否有一种方法可以动态提供IP地址来响应应用程序?您可以使用Node networkInterfaces开箱即用功能,或者使用一个包来处理解析请求和提取数据 const os

我想得到运行NodeJS服务器的计算机的IP地址,以便在React应用程序中使用服务器的正确URL

例如,当我取一个“http://localhost:/api“从同一网络中的另一个设备,它无法工作

我试图手动提供计算机IP地址,但过了一段时间,一两天,IP发生了变化,然后我不得不再次打开“提供IP地址”


所以,我想问的是,是否有一种方法可以动态提供IP地址来响应应用程序?

您可以使用Node networkInterfaces开箱即用功能,或者使用一个包来处理解析请求和提取数据

const os = require('os');
const networkInterfaces = os.networkInterfaces();
console.log(networkInterfaces);
如果您不想自己解析响应,请查看非常流行的包:RequestIP。


对于任何面临相同问题的人,我找到了一个简单的解决方案,即在React应用程序的package.json文件中指定一个“代理”:

在package.json文件中

...
"proxy": "http://192.xxx.xx.xxx:<port>"
...
。。。
“代理”:http://192.xxx.xx.xxx:"
...
这样,您就可以告诉react在请求时将请求代理到后端服务器,例如“/api/v1”,而不是像这样指定整个urlhttp://192.xxx.xx.xxx:/api/v1"


每当IP发生更改时,您只需编辑“proxy”值并重新启动dev服务器。

如果这只是“dev”问题,则用于启动其他服务的大多数cli API都应允许在用于启动它们的cli/script表达式中使用“-p”或类似的命令行李配置端口。通过对各个端口的控制,您可以在dev中重新配置本地主机上运行的联邦服务。谢谢您的回答,但我认为这不是我想要的。我正在尝试将React与Node.js API连接,问题是我必须在React中写入Node.js服务器的URL,比如“localhost:”,现在如果我从运行服务器的设备以外的其他设备使用该应用程序,localhost将无法工作,当我尝试写入计算机的IP地址时,它工作了,但一天后,我不知道为什么,IP地址改变了,所以我不得不去改变每个url,这是我认为可以通过某种方式避免的负担。此外,我在react应用程序中编写了一个脚本,用节点NetworkInterface检索IP地址,但后来我意识到这将只检索客户端的IP地址,而不是服务器的IP地址。如果我错了,有一种方法可以检索服务器的IP地址,比如用“npm start”脚本运行脚本,那么请告诉我怎么做。除非您向提供商支付静态IP费用,否则您的IP会发生变化。通常他们会收取少量费用,为您提供一个静态的。这是为IP世界的其他人看你。您可以使用一些免费服务进行检查,如:。在您的家中-本地IP-是您要为特定设备更改的路由器配置。默认情况下,大多数路由器/接入点都是动态的,但如果您登录到路由器(通常位于本地IP上,以254结尾),则可以保留。非常感谢您为回答我的问题所做的努力。我没有使用以.254结尾的本地IP,所以我猜它将继续任意更改。我找到了一个解决问题的简单方法,即通过向保存节点服务器url的package.json添加一个“proxy”键来代理我在react应用程序中使用的所有url,每当我的IP发生更改时,我只编辑该键一次,然后重新启动开发服务器。
...
"proxy": "http://192.xxx.xx.xxx:<port>"
...