错误:getaddrinfo ENOTFOUND

14

我有一个简单的Node.js机器人,每秒向rest API发出一次HTTP请求。

如果返回的数据正确,那么我将构造一个URL进行HTTP POST。

一切都运行良好,但是在运行了约4-5小时后,我得到了这个错误。

0|server   | error:  Error: getaddrinfo ENOTFOUND www.rest-api.com www.rest-api.com:443
0|server   |     at errnoException (dns.js:28:10)
0|server   |     at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:73:26)

有人能解释一下为什么会发生这种情况吗?

在我重新启动服务器后,一切都恢复了正常。

我正在使用axios进行http请求。


你发送请求到服务器的频率有多高? - Dmytro
这个错误到底是什么意思? - Charlie Parker
4个回答

13

我遇到了同样的问题并解决了它!

尝试执行:

sudo vi /etc/hosts

添加以下内容:

127.0.0.1 localhost

到 hosts 文件中。


10
有人能否解释一下为什么/如何这个解决方案起作用? - Shane Sepac

7

症状是无法解析远程地址。

原因可能有很多。首先,尝试直接解析地址来确定是否与节点有关:

$ nslookup www.rest-api.com

或者:

$ dig www.rest-api.com

如果那不起作用,你可能有一个连接问题,原因可能是任何一种。如果你使用DHCP,请尝试查看你的DHCP租约持续时间。
然而,如果那个确实可以正常工作,但你的节点应用程序仍然失败了,你可能遇到了这个问题:https://github.com/nodejs/node/issues/5436 , 它是底层库中一个错误。你可以实现该线程中提到的解决方法,通过在请求选项中指定IP版本族作为以下参数{ family:4 }的一部分。

4

我遇到了这个问题,因为我的URL中有一个错别字——路径不存在。在使用很长的子域名URL时必须小心。我是通过使用Postman控制台发现了这个问题的 - 可以通过转到“查看”>“显示Postman控制台”来获得。


我在我的URL中也有相同的错别字 - 谢谢您提到这一点,很难注意到这个问题。 - Wieslaw Olborski

0

在Postman中,当我没有选择想要使用的环境时,我遇到了这个错误。因此,我尝试调用的变量未被定义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接