我的服务器今天抛出了这个,这是一个我以前从未见过的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做什么?它属于节点的哪一部分?如何在不同的域上重新创建此错误?


当前回答

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

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

其他回答

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

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

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

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

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

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

在我的例子中,连接到VPN,当在Windows终端中运行Ubuntu时发生错误,但当直接从Windows(不是从Windows终端中)打开Ubuntu时不会发生错误。

如果你在docker容器中得到这个错误,比如在alpine容器中运行npm install时,原因可能是容器启动后网络发生了变化。

要解决这个问题,只需停止并重新启动容器

docker-compose down
docker-compose up

来源:https://github.com/moby/moby/issues/32106 # issuecomment - 578725551

启用了火焰,它仍然不工作?

很可能你需要从正确的路径来设置.env, require('dotenv')。配置({路径:__dirname + './../.)env '});不会起作用(或任何其他路径)。只需将.env文件放在函数目录中,从该目录部署到Firebase。