Cuando utilice Node.js para intentar obtener el contenido html de la siguiente página web:
eternagame.wikia.com/wiki/EteRNA_Dictionary
Obtuve el siguiente error:
events.js:72
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
at Object.onanswer [as oncomplete] (dns.js:124:16)
Ya busqué este error en stackoverflow, y me di cuenta de que esto se debe a que node.js no puede encontrar el servidor desde DNS (creo). Sin embargo, no estoy seguro de por qué sería así, ya que mi código funciona perfectamente www.google.com
.
Aquí está mi código (prácticamente copiado y pegado de una pregunta muy similar, excepto con el host cambiado):
var http = require("http");
var options = {
host: 'eternagame.wikia.com/wiki/EteRNA_Dictionary'
};
http.get(options, function (http_res) {
// initialize the container for our data
var data = "";
// this event fires many times, each time collecting another piece of the response
http_res.on("data", function (chunk) {
// append this chunk to our growing `data` var
data += chunk;
});
// this event fires *one* time, after all the `data` events/chunks have been gathered
http_res.on("end", function () {
// you can use res.send instead of console.log to output via express
console.log(data);
});
});
Aquí está la fuente desde donde copié y pegué: ¿Cómo hacer llamadas de servicio web en Expressjs?
No estoy usando ningún módulo con node.js.
Gracias por leer.
var http = require("http");
ovar https = require("https");
basado en host remotoENOTFOUND
significaRespuestas:
En la documentación del módulo Node.js
HTTP
: http://nodejs.org/api/http.html#http_http_request_options_callbackPuede llamar
http.get('http://eternagame.wikia.com/wiki/EteRNA_Dictionary', callback)
, luego se analiza la URLurl.parse()
; o llamehttp.get(options, callback)
, dondeoptions
estaActualizar
Como se indicó en el comentario de @EnchanterIO, el
port
campo también es una opción separada; y el protocolohttp://
no debe incluirse en elhost
campo. Otras respuestas también recomiendan el uso delhttps
módulo si se requiere SSL.fuente
host
, entonces nohttp://
ohttps://
; y 2. No incluya la ruta en lahost
propiedad, sino más bien en lapath
propiedad.options {...}
bloque.Otra fuente común de error para
está escribiendo el protocolo (https, https, ...) al establecer la
host
propiedad enoptions
fuente
en las opciones para la solicitud HTTP, cámbiela a
Creo que eso solucionará tu problema.
fuente
fuente
Si necesita usar https, use la biblioteca https
fuente
Mi problema era que mi servicio DNS OS X (Mavericks) necesitaba ser reiniciado .
fuente
Creo que http realiza una solicitud en el puerto 80, a pesar de que mencioné la URL completa del host en el objeto de opciones. Cuando ejecuté la aplicación del servidor que tiene la API, en el puerto 80, que estaba ejecutando anteriormente en el puerto 3000, funcionó. Tenga en cuenta que para ejecutar una aplicación en el puerto 80 necesitará privilegios de root.
Error with the request: getaddrinfo EAI_AGAIN localhost:3000:80
Aquí hay un fragmento de código completo
fuente
host: https://server.com
, que también se menciona aquí stackoverflow.com/a/28385129/432903Tenga en cuenta que este problema también puede ocurrir si el dominio al que hace referencia deja de funcionar (por ejemplo, ya no existe).
fuente
Arregle este error con esto
Fuente original: https://github.com/npm/npm/issues/6686
fuente
Recibí el mismo error y utilicé el siguiente enlace para obtener ayuda:
https://nodejs.org/api/http.html#http_http_request_options_callback
No estaba teniendo en mi código:
req.end();
(NodeJs V: 5.4.0) una vez agregado arriba de la
req.end();
línea, pude deshacerme del error y funcionó bien para mí.fuente
Lo probé usando el módulo de solicitud y pude imprimir el cuerpo de esa página con bastante facilidad. Desafortunadamente con las habilidades que tengo, no puedo ayudar más que eso.
fuente
Recibí este error al pasar del entorno de desarrollo al entorno de producción. Estaba obsesionado con poner
https://
todos los enlaces. Esto no es necesario, por lo que puede ser una solución para algunos.fuente
Me deshice de http y extra slash (/). Acabo de usar este 'node-test.herokuapp.com' y funcionó.
fuente
Si aún se enfrenta a la comprobación de la configuración del proxy, para mí fue la configuración del proxy la que faltaba y no pude realizar la solicitud ya que los http / https directos están bloqueados. Así que configuré el proxy de mi organización al hacer la solicitud.
fuente
Este problema se resolvió eliminando los caracteres no deseables de la contraseña para la conexión. Por ejemplo, tenía estos caracteres: <##% y causó el problema (lo más probable es que la etiqueta hash fuera la causa principal del problema).
fuente
Intente usar la dirección IP del servidor en lugar del nombre de host. Esto funcionó para mí. Espero que funcione para ti también.
fuente
Mi problema fue que estábamos analizando url y generando http_options para http.request ();
Estaba usando request_url.host que ya tenía un número de puerto con el nombre de dominio, así que tuve que usar request_url.hostname.
fuente