web-dev-qa-db-fra.com

Erreur: getaddrinfo ENOTFOUND dans nodejs pour obtenir un appel

J'exécute un serveur Web sur le noeud dont le code est donné ci-dessous

var restify = require('restify');

var server = restify.createServer();

var quotes = [
  { author : 'Audrey Hepburn', text : "Nothing is impossible, the Word itself says 'I'm possible'!"},
  { author : 'Walt Disney', text : "You may not realize it when it happens, but a kick in the teeth may be the best thing in the world for you"},
  { author : 'Unknown', text : "Even the greatest was once a beginner. Don't be afraid to take that first step."},
  { author : 'Neale Donald Walsch', text : "You are afraid to die, and you're afraid to live. What a way to exist."}
];

server.get('/', function(req, res) {
  res.json(quotes);
});

server.get('/quote/random', function(req, res) {
  var id = Math.floor(Math.random() * quotes.length);
  var q = quotes[id];
  res.json(q);
});

server.get('/quote/:id', function(req, res) {
  if(quotes.length <= req.params.id || req.params.id < 0) {
    res.statusCode = 404;
    return res.send('Error 404: No quote found');
  }

  var q = quotes[req.params.id];
  res.json(q);
});

server.listen(process.env.PORT || 3011);

Et puis je veux faire une requête get dans le code suivant

var https = require('http');

/**
 * HOW TO Make an HTTP Call - GET
 */
// options for GET
var optionsget = {
    Host : 'http://localhost',
    port : 3010,
    path : '/quote/random', // the rest of the url with parameters if needed
    method : 'GET' // do GET
};

console.info('Options prepared:');
console.info(optionsget);
console.info('Do the GET call');

// do the GET request
var reqGet = https.request(optionsget, function(res) {
    console.log("statusCode: ", res.statusCode);
    // uncomment it for header details
//  console.log("headers: ", res.headers);


    res.on('data', function(d) {
        console.info('GET result:\n');
        process.stdout.write(d);
        console.info('\n\nCall completed');
    });

});

reqGet.end();
reqGet.on('error', function(e) {
    console.error(e);
});

Je viens juste de commencer avec node et je ne sais même pas si c'est le bon chemin ... Je veux tester les performances de express et restify.J'ai fait un test de performance Apache pour le code serveur que j'ai écrit et que j'ai trouvé des résultats contradictoires Restify is better.Alors, je veux en tester un peu plus en effectuant des appels vers des services distants, puis en lecture ultérieure, en écrivant sur mongodb.Le code ci-dessus est mon point de départ.Je reçois

{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }

Est-ce que je vais au moins dans la direction de l'écriture? Quelle est la bonne façon de faire le type de test que je veux faire? Pourquoi ai-je obtenu le résultat Restify plus rapide qu'express? Quelqu'un peut-il me guider vers les meilleurs didacticiels de point de départ pour une application dans node/express/backbone et mongodb?

39
nnm

getaddrinfo ENOTFOUND signifie que le client n'a pas été en mesure de se connecter à une adresse donnée ..__ S'il vous plaît essayez de spécifier l'hôte sans http:

var optionsget = {
    Host : 'localhost',
    port : 3010,
    path : '/quote/random', // the rest of the url with parameters if needed
    method : 'GET' // do GET
};

En ce qui concerne les ressources d’apprentissage, vous ne vous tromperez pas si vous commencez avec http://www.nodebeginner.org/ puis que vous parcourez un bon livre pour approfondir vos connaissances - je recommande Professional Node. js , mais il y en a beaucoup.

77
Karol

pour moi c'était parce que dans le fichier/etc/hosts le nom d'hôte n'est pas ajouté

13
Ben Kim

Vérifier le fichier hôte qui aime ça

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
11
neoerol

Je ne peux pas expliquer pourquoi, mais le fait de changer le paramètre url de localhost à 127.0.0.1 sur la méthode mongodb.MongoClient.connect() sous Windows 10 a résolu le problème.

6
jay

J'ai également eu le même problème et je l'ai corrigé en utilisant le bon proxy .Veuillez vérifier vos paramètres de proxy si vous utilisez un réseau de proxy.

J'espère que ceci vous aidera - 

2
Naren Chejara

j'ai le même problème avec le serveur Amazon je change mon code à cette 

var connection = mysql.createConnection({
    localAddress     : '35.160.300.66',
    user     : 'root',
    password : 'root',
    database : 'rootdb',
});

vérifier le module de noeud mysql https://github.com/mysqljs/mysql

0
Adiii