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


当前回答

我在码头合成上遇到了问题。原来我忘了把我的自定义隔离命名网络添加到我的服务中,但找不到。

TLDR;确保在compose文件中,在需要相互通信的两个服务上定义了自定义网络。

我的错误是这样的:error: getaddrinfo EAI_AGAIN minio-service。当使用minio-service主机名调用minio-service时,错误来自我的服务器后端。这告诉我minio-service的运行服务,不能被我的服务器的运行服务访问。我能够解决这个问题的方法是我改变了docker-compose中的minio-service:

docker-compose.yml

version: "3.8"

# ...

services:
  server:
    # ...
    networks:
      my-network:
    # ...
  minio-service:
    # ... (missing networks: section)

# ...

networks:
  my-network:

包括我的自定义隔离命名网络,像这样:

docker-compose.yml

version: "3.8"

# ...

services:
  server:
    # ...
    networks:
      my-network:
    # ...
  minio-service:
    # ...   
    networks:
      my-network:
    # ...

# ...

networks:
  my-network:

关于docker-compose网络的更多细节可以在这里找到。

其他回答

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时不会发生错误。

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

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

在我的情况下,问题是docker网络的ip分配范围,详见这篇文章

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

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

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