unable telemetry requesterror node mercadopago error enotfound eai_again node.js httprequest getaddrinfo

node.js - telemetry - requesterror error getaddrinfo enotfound



nodejs httprequest con datos-obteniendo el error getaddrinfo ENOENT (8)

El problema también puede ocurrir si tienes una barra inclinada final:

Bueno: "www.google.com"

Malo: "www.google.com/"

Actualización - Respondida por uno mismo

Veo que uno tiene que asegurarse de que el DNS se resuelva correctamente desde la máquina, revise la documentación del nodo para asegurarse de que ese dominio se pueda resolver.

Pregunta original

Estoy escribiendo un programa basado en nodos, en el que el usuario puede pedirme que haga una httprequest en su nombre {por supuesto que me proporcionan algunos datos y un método para llamar}, pero cada vez que hago una httprequest me da un error

getaddrinfo ENOENT así es como se ve mi código

function makehttprequest(deviceid, httpaction, httppath,methods, actiondata, callback) { console.log(''we are here with httpaction'' + httpaction + '' path '' + httppath + '' method '' + methods + '' action data '' + actiondata); //do the http post work, get the data, and call the callback function with return data var options = { host: httpaction, port: 80, path: httppath, method: methods }; try { var req = http.request(options, function(res) { console.log(''STATUS: '' + res.statusCode); console.log(''HEADERS: '' + JSON.stringify(res.headers)); res.setEncoding(''utf8''); res.on(''data'', function (chunk) { console.log(''BODY: '' + chunk); }); }); } catch(e) { console.log(''error as : '' + e.message); } req.on(''error'', function(e) { console.log(''problem with request: '' + e.message); }); // write data to request body console.log(''writing data to request ..''); req.write(actiondata); console.log(''finished writing data to request…''); req.end(); console.log(''request ended…''); }


Estaba obteniendo [Error: Getaddrinfo ENOENT], pero fue justo después de obtener [Error: connect EMFILE]; dado que estoy haciendo pruebas de carga con miles de clientes, el error EMFILE (la causa raíz) estaba siendo opacado. La solución fue la misma que para EMFILE : aumentar el número de descriptores de archivos. Solo agrégalo aquí para completarlo en caso de que alguien más tenga el mismo problema.


Estaba recibiendo este error al llamar a server.listen(PORT, HOST); donde HOST no se pudo resolver de nuevo a la máquina local.

Una vez que cambié esto a un nombre de host / nombre de dominio / ip que la máquina local resolvió, este error desapareció.

Como intentaba conectarme a través de un nombre de host para propósitos de desarrollo, agregué una entrada al archivo de hosts con el nombre de host deseado y me aseguré de que coincidiera con el nombre de host pasado a server.listen()



Golpeé esto hoy nuevamente por un error tonto. Esto fue porque el número de puerto se puso como parte del nombre de host.

// wrong. gets error getaddrinfo ENOENT var options = { hostName: ''localhost:1337'', .... } // correct var options = { hostname: ''localhost'', port: 1337, };



Si todo su código parece estar bien y todavía obtiene el mismo error, que era mi caso, la solución era verificar los servidores de nombres en mi archivo /etc/resolv.conf .

Agregué el servidor de nombres de Google al comienzo de mi archivo resolv.conf (8.8.8.8) y el código comenzó a funcionar bien una vez más, no hubo más errores.

Vale la pena notar que este error comenzó a ocurrir en mí el 4 de febrero de 2015 después de ejecutar una sudo apt-get upgrade , mi nodo js debe haber sido actualizado y se presentó un error que parecía ser incompatible con los servidores de nombres que tenía.

Al principio, verifiqué si tenía algún problema con el DNS al obtener la URL que necesitaba usando wget en la línea de comandos, conseguí que el contenido de la URL de destino fuera correcto, así que no pensé que realmente era un problema de DNS, pero sí lo era.


Tenía un problema similar pero funcionaba como una función AWS Lambda, por lo que, en caso de que alguien tenga este problema con las funciones de Lambda, así es como lo resolví.

  • Dale a tu función Lambda una VPC.
  • Seleccione al menos 2 subredes.
  • Y seleccione un grupo de seguridad.

Pasé un día hasta que encontré esta solución, espero que ayude a otra persona.