错误:getaddrinfo EAI_AGAIN

时间:2016-10-21 17:11:27

标签: javascript node.js error-handling dns shopify

我的服务器今天扔了这个,这是我以前从未见过的nodejs错误。

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攻击有关。 Here's an article about that.

我的主要问题是dns.js做了什么?节点的哪个部分是它的一部分?我可以使用其他域重新创建此错误吗?

12 个答案:

答案 0 :(得分:68)

EAI_AGAIN是DNS查找超时错误,表示它是网络连接错误或代理相关错误。

  

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

  • dns.js用于节点获取域的IP地址(简要说明)。

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

答案 1 :(得分:7)

如果您在Docker容器内收到此错误,例如在高山容器中运行npm install时,原因可能是自容器启动以来网络已更改。

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

docker-compose down
docker-compose up

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

答案 2 :(得分:1)

OP的错误指定了主机(my-store.myshopify.com)。 除了未指定域外,我在所有方面遇到的错误都是相同的。

我的解决方案可能会帮助标题为“错误:getaddrinfo EAI_AGAIN”的其他人

当尝试从原始代码所在的另一台VM服务NodeJs和VueJs应用程序时遇到错误。

文件vue.config.js读为:

 module.exports = {
   devServer: {
     host: 'tstvm01',
     port: 3030,
   },
 };

在原始计算机上投放时,启动输出为:

App running at:
- Local:   http://tstvm01:3030/ 
- Network: http://tstvm01:3030/

在VM tstvm07上使用相同的设置使我得到了与OP描述的错误非常相似的错误:

 INFO  Starting development server...
 10% building modules 1/1 modules 0 activeevents.js:183                              
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo EAI_AGAIN
    at Object._errnoException (util.js:1022:11)
    at errnoException (dns.js:55:15)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)

如果尚不明显,请将vue.config.js更改为...

 module.exports = {
   devServer: {
     host: 'tstvm07',
     port: 3030,
   },
 };

...解决了问题。

答案 3 :(得分:1)

在对我在Docker容器内操作的GraphQL API应用程序进行了微不足道的更新后,我开始遇到此错误(尽管堆栈跟踪不同)。无论出于何种原因,该容器都难以解决API使用的后端服务。

随便看看我在构建的docker基本映像中是否进行了一些更改(顺便说一句,节点:13-alpine),我决定尝试使用最古老的计算机科学技巧进行重新启动...启动Docker容器,一切恢复正常。

很显然,这并不是解决潜在问题的有意义的解决方案-我只是发布它,因为它确实为我解决了这个问题,而又没有深深地陷入困境。

答案 4 :(得分:1)

xerq's excellent answer所述,这是DNS超时问题。

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

答案 5 :(得分:0)

@xerq正确指出,这里有一些参考 http://www.codingdefined.com/2015/06/nodejs-error-errno-eaiagain.html

我得到了同样的错误,我通过更新windows os

中此位置下的“hosts”文件解决了这个问题

C:\ Windows \ System32下\驱动程序\等

希望它有所帮助!!

答案 6 :(得分:0)

这是与主机文件设置有关的问题。 将以下行添加到您的热点文件中 在乌布图:/ etc / hosts

127.0.0.1   localhost

在Windows中:c:\ windows \ System32 \ drivers \ etc \ hosts

127.0.0.1   localhost

答案 7 :(得分:0)

我在AWS和Serverless上遇到了同样的问题。我尝试使用 // Calculate the length $messageLength = strlen(strip_tags($message)); $numberOfMessages = ceil($messageLength/160); // Loop through how many messages should be sent (160 character per sms limit) for($i=0;$i<$numberOfMessages;$i++){ // Add Recipients // Calculate the length $messageLength = strlen(strip_tags($message)); $numberOfMessages = ceil($messageLength/160); // Loop through how many messages should be sent (160 character per sms limit) for($i=0;$i<$numberOfMessages;$i++){ // Add Recipients for($j=0;$j<count($getPhoneListData->myQuery);$j++){ $phoneNumber1 = str_replace('-','',$getPhoneListData->myQuery[$j]->Phone) . '@vtext.com'; $phoneNumber2 = str_replace('-','',$getPhoneListData->myQuery[$j]->Phone) . '@txt.att.net'; $phoneNumber3 = str_replace('-','',$getPhoneListData->myQuery[$j]->Phone) . '@sms.myboostmobile.com'; $phoneNumber4 = str_replace('-','',$getPhoneListData->myQuery[$j]->Phone) . '@mms.cricketwireless.net'; $phoneNumber5 = str_replace('-','',$getPhoneListData->myQuery[$j]->Phone) . '@messaging.sprintpcs.com'; $phoneNumber6 = str_replace('-','',$getPhoneListData->myQuery[$j]->Phone) . '@tmomail.net'; $mail->AddBCC(trim($phoneNumber1)); $mail->AddBCC(trim($phoneNumber2)); $mail->AddBCC(trim($phoneNumber3)); $mail->AddBCC(trim($phoneNumber4)); $mail->AddBCC(trim($phoneNumber5)); $mail->AddBCC(trim($phoneNumber6)); } } } 区域,但该区域无法正常工作,因此在示例中,我不得不将其更改为eu-central-1

答案 8 :(得分:0)

启用了Blaze,它仍然不起作用?

很可能您需要从正确的路径importances = pd.Series(forest.feature_importances_,index=X.columns) importances = importances.sort_values() importances[-30:].plot.barh() won't work(或其他任何路径)中设置.env。只需将require('dotenv').config({ path: __dirname + './../.env' });文件放在.env目录中,即可从其中部署到functions

答案 9 :(得分:0)

就我而言,问题是 docker 网络 ip 分配范围,请参阅 this post 了解详情

答案 10 :(得分:-4)

如果您都不在本地主机上获得该产品,则意味着由于免费套餐的限制,您必须升级您的计划

答案 11 :(得分:-6)

将npm更新为最新修复了这个问题。

npm install npm@latest

此问题与您的网络连接有关。因此可以是暂时的。在稳定的互联网连接上,这个问题很难被发现。