2017-05-16 66 views
5

Mam prosty bot Node.js, który wysyła żądanie HTTP co sekundę do reszty API.Błąd: getaddrinfo ENOTFOUND

Jeśli zwrócone dane są poprawne, to skonstruuję URL, w którym HTTP POST.

Wszystko działa dobrze, ale po ~ 4-5hrs od biegania mam ten błąd

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) 

Czy ktoś może mi wyjaśnić, dlaczego tak się stało?

Po ponownym uruchomieniu serwera wszystko zaczęło działać.

Używam axios do tworzenia żądań http.

+0

Jak często wysyłają żądania do serwera? – Dmitry

Odpowiedz

3

Spotkałem ten sam problem i rozwiązałem go!

try:

sudo vi /etc/hosts

i dodać:

127.0.0.1 localhost

do hostów

+0

Jesteś mężczyzną. Ty. – Speakeasys

2

Objawem jest to, że nie można rozwiązać adresu zdalnego.

Przyczyną może być wiele rzeczy. Najpierw sprawdźmy, czy jest to specyficzny węzeł próbując rozwiązać adres bezpośrednio:

$ nslookup www.rest-api.com 

Lub:

$ dig www.rest-api.com 

Jeśli to nie zadziała, masz problem z łącznością. To może być cokolwiek. Spróbuj sprawdzić, jak długo dzierżawa DHCP będzie trwała, jeśli używasz DHCP.

Jednak jeśli to działa dobrze, ale aplikacja twojego węzła nadal się nie udaje, być może używasz tego: https://github.com/nodejs/node/issues/5436, co jest błędem w podstawowej bibliotece. Można wdrożyć obejście wspomniane w tym wątku, które określa rodzinę wersji IP za pomocą następującego parametru { family: 4 } jako części opcji żądania.