36 votes

nodejs httprequest with data - Obtention de l'erreur getaddrinfo ENOENT

Mise à jour - a Répondu par l'auto Je vois qu'on a à assurez-vous que le DNS est résolu correctement à partir de la machine, vérifier que ce code assurez-vous que l'url est accessible nodejs.org/docs/latest/api/dns.html#dns.resolve

Question D'Origine

je suis en train d'écrire une nœuds en fonction du programme,dans laquelle l'utilisateur peut me demander de faire un httprequest sur leur nom {bien sûr ils me fournir quelques données, et de la méthode à appeler avec} mais chaque fois que je fais un httprequest il me donne une erreur

getaddrinfo ENOENT c'est ainsi que mon code ressemble

   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…');
}

s'il vous plaît aider

77voto

Micah Points 2587

J'ai vu cela se produire lorsque votre hôte qui vous croiser en httpaction) a le schéma (donc "http://") en face de lui. Votre hôte doit être strictement le domaine comme "www.google.com" pas "http://www.google.com" ou "www.google.com/hello-world" ou "http://www.google.com/hello-world".

Garder juste le domaine.

Voici un exemple: http://allampersandall.blogspot.com/2012/03/nodejs-http-request-example.html

8voto

rockerston Points 71

Le problème peut également se produire si vous avez un slash final:

Bon: "www.google.com"

Mauvais: "www.google.com/"

4voto

jpillora Points 1416

Évitez tous ces problèmes de nom d’hôte / protocole / port / slash en utilisant le module request au lieu de http

https://github.com/mikeal/request

3voto

alexfernandez Points 1041

Je recevais [Erreur: Getaddrinfo ENOENT], mais c'était juste après avoir reçu [Erreur: connect EMFILE]; depuis que je fais des tests de charge avec des milliers de clients, l'erreur EMFILE (la cause première) était en train d'être opaque. La solution était la même que pour EMFILE : augmenter le nombre de descripteurs de fichiers. Il suffit de l'ajouter ici pour que ce soit complet au cas où quelqu'un d'autre aurait le même problème.

3voto

Sushil Points 1573

Je frappe à nouveau aujourd'hui pour une erreur stupide. Cela était dû au fait que le numéro de port avait été placé dans le nom d'hôte.

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

// correct
var options = {
    hostname: 'localhost',
    port: 1337,
};
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X