requesterror node error enotfound node.js

error - Node.js getaddrinfo ENOTFOUND



getaddrinfo enotfound request (16)

Creo que http realiza una solicitud en el puerto 80, aunque mencioné la url de host completa en el objeto de opciones. Cuando ejecuté la aplicación de servidor que tiene la API, en el puerto 80, que estaba ejecutando previamente 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

var http=require(''http''); var options = { protocol:''http:'', host: ''localhost'', port:3000, path: ''/iso/country/Japan'', method:''GET'' }; var callback = function(response) { var str = ''''; //another chunk of data has been recieved, so append it to `str` response.on(''data'', function (chunk) { str += chunk; }); //the whole response has been recieved, so we just print it out here response.on(''end'', function () { console.log(str); }); } var request=http.request(options, callback); request.on(''error'', function(err) { // handle errors with the request itself console.error(''Error with the request:'', err.message); }); request.end();

Al usar 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é esto sería así, ya que mi código funciona perfectamente en 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 donde copié y pegué: ¿Cómo hacer llamadas al servicio web en Expressjs?

No estoy usando ningún módulo con node.js.

Gracias por leer,

Vineet


En la documentación del módulo HTTP Node.js : http://nodejs.org/api/http.html#http_http_request_options_callback

Puedes llamar a http.get(''http://eternagame.wikia.com/wiki/EteRNA_Dictionary'', callback) , la URL se analiza con url.parse() ; o llame a http.get(options, callback) , donde están las options

{ host: ''eternagame.wikia.com'', path: ''/wiki/EteRNA_Dictionary'' }


La solución a este error para mí fue instalar http con el administrador de paquetes de nodo:

npm install http-server -g


Lo intenté utilizando 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.


Me deshice de http y slash extra (/). Acabo de usar este ''node-test.herokuapp.com'' y funcionó.


Mi problema era que mi servicio de DNS OS X (Mavericks) necesitaba ser rebooted .


Obtuve este error al pasar del entorno de desarrollo al entorno de producción. Estaba obsesionado con poner https:// en todos los enlaces. Esto no es necesario, por lo que puede ser una solución para algunos.


Otra fuente común de error para

Error: getaddrinfo ENOTFOUND at errnoException (dns.js:37:11) at Object.onanswer [as oncomplete] (dns.js:124:16)

está escribiendo el protocolo (https, https, ...) al configurar la propiedad del host en options

// DON''T WRITE THE `http://` var options = { host: ''http://yoururl.com'', path: ''/path/to/resource'' };



Resolví este problema eliminando caracteres no deseables de la contraseña para la conexión. Por ejemplo, tuve estos caracteres: <##% y causó el problema (probablemente la etiqueta hash fue la causa raíz del problema).


Si aún se encuentra en proceso de finalización de pago para la configuración del proxy, para mí era la configuración del proxy la que faltaba y no podía realizar la solicitud porque los http / https directos están bloqueados. Así que configuré el proxy de mi organización mientras hacía la solicitud.

npm install https-proxy-agent or npm install http-proxy-agent const httpsProxyAgent = require(''https-proxy-agent''); const agent = new httpsProxyAgent("http://yourorganzation.proxy.url:8080"); const options = { hostname: ''encrypted.google.com'', port: 443, path: ''/'', method: ''GET'', agent: agent };


Si necesita usar https, entonces use la biblioteca https

https = require(''https''); // options var options = { host: ''eternagame.wikia.com'', path: ''/wiki/EteRNA_Dictionary'' } // get https.get(options, callback);


Solucioné este error con esto

$ npm info express --verbose # Error message: npm info retry will retry, error on last attempt: Error: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443 $ nslookup registry.npmjs.org Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: registry.npmjs.org canonical name = a.sni.fastly.net. a.sni.fastly.net canonical name = prod.a.sni.global.fastlylb.net. Name: prod.a.sni.global.fastlylb.net Address: 151.101.32.162 $ sudo vim /etc/hosts # Add "151.101.32.162 registry.npmjs.org` to hosts file $ npm info express --verbose # Works now!

Fuente original: https://github.com/npm/npm/issues/6686


Tenga en cuenta que este problema también puede ocurrir si el dominio al que hace referencia deja de funcionar (por ejemplo, ya no existe).


en las opciones para la solicitud HTTP, cambie a

var options = { host: ''eternagame.wikia.com'', path: ''/wiki/EteRNA_Dictionary'' };

Creo que eso solucionará tu problema.


var http=require(''http''); http.get(''http://eternagame.wikia.com/wiki/EteRNA_Dictionary'', function(res){ var str = ''''; console.log(''Response is ''+res.statusCode); res.on(''data'', function (chunk) { str += chunk; }); res.on(''end'', function () { console.log(str); }); });