我的服务器今天抛出了这个,这是一个我以前从未见过的Node.js错误:

Error: getaddrinfo EAI_AGAIN my-store.myshopify.com:443
    at Object.exports._errnoException (util.js:870:11)
    at errnoException (dns.js:32:15)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:78:26)

我想知道这是否与今天影响Shopify和许多其他服务的DynDns DDOS攻击有关。这里有一篇关于这个的文章。

我的主要问题是dns.js做什么?它属于节点的哪一部分?如何在不同的域上重新创建此错误?


当前回答

如果您使用Firebase Cloud Functions得到此错误,这是由于免费层的限制(出站网络只允许谷歌服务)。

升级到火焰或火焰计划为它工作。

其他回答

在对我的GraphQL API应用程序(在docker容器内操作)进行了一次微不足道的更新后,我开始得到这个错误(不同的堆栈跟踪)。不管出于什么原因,容器在解析API使用的后端服务时遇到了困难。

在四处打听了一下我正在构建的docker基础映像(顺便说一下,node:13-alpine)中是否发生了一些更改之后,我决定尝试最古老的计算机科学技巧:重新启动…我停下来启动docker容器,一切恢复正常。

显然,这不是一个有意义的解决潜在问题的方案——我只是发布这个,因为它确实为我澄清了问题,而没有深入到兔子洞。

我在使用AWS和无服务器时也遇到了同样的问题。我尝试了eu-central-1区域,但它不起作用,所以我不得不将其更改为us-east-2。

@xerq指向正确,这里有更多的参考 http://www.codingdefined.com/2015/06/nodejs-error-errno-eaiagain.html

我得到了同样的错误,我通过更新“hosts”文件在Windows操作系统的这个位置下解决了这个问题

C:\Windows\System32\drivers\etc

希望能有所帮助!!

EAI_AGAIN是一个DNS查找超时错误,意味着它是一个网络连接错误或代理相关的错误。

我的主要问题是dns.js做什么?

dns.js用于节点获取域的ip地址(简而言之)。

更多信息: http://www.codingdefined.com/2015/06/nodejs-error-errno-eaiagain.html

正如xerq的出色回答所解释的那样,这是一个DNS超时问题。

我想为那些使用Windows子系统for Linux的人提供另一个可能的答案——在某些情况下,在Windows从睡眠状态恢复后,客户端操作系统中似乎出现了一些问题。重新启动主机操作系统将解决这些问题(重新启动WSL服务也可能会解决同样的问题)。