wake-up-neo.com

Fehler: getaddrinfo ENOTFOUND in nodejs zum Aufruf aufrufen

Ich betreibe einen Webserver auf einem Knoten, dessen Code unten angegeben ist

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);

Und dann möchte ich eine Get-Anfrage im folgenden Code machen

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

Ich fange gerade erst mit node an und ich weiß nicht mal, ob dies der richtige Weg ist ... Ich möchte die Leistung von express testen und restify restify ist besser. Ich möchte einiges mehr testen, indem ich Remote-Services anrufe und dann später schreibe

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

Bin ich zumindest in Schreibrichtung? Was ist der richtige Weg zu den gewünschten Tests? Warum wurde das Ergebnis schneller wiederhergestellt als express? Kann mich jemand zu den besten Einführungs-Tutorials für die Anwendung in node/express/backbone und mongodb führen?

39
nnm

getaddrinfo ENOTFOUND bedeutet, dass der Client keine Verbindung mit der angegebenen Adresse ..__ herstellen konnte. Geben Sie den Host ohne http an:

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

Wenn Sie mit http://www.nodebeginner.org/ anfangen und ein gutes Buch durcharbeiten, erhalten Sie ein besseres Wissen, um mehr über die Lernressourcen zu erfahren. Ich empfehle Professional Node. js , aber es gibt viele da draußen.

77
Karol

für mich war es, weil in/etc/hosts der Hostname nicht hinzugefügt wurde

13
Ben Kim

Überprüfen Sie die Host-Datei wie diese

##
# 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

Ich kann nicht erklären, warum, aber das Ändern des URL-Parameters von localhost in 127.0.0.1 auf mongodb.MongoClient.connect()-Methode unter Windows 10 löste das Problem.

6
jay

Ich hatte auch das gleiche Problem und habe es mit dem rechten Proxy behoben. Bitte überprüfen Sie Ihre Proxy-Einstellungen, wenn Sie ein Proxy-Netzwerk verwenden.

Hoffe das wird dir helfen - 

2
Naren Chejara

ich habe das gleiche Problem mit dem Amazon-Server. Ich ändere meinen Code hier 

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

Überprüfen Sie das mysql node module https://github.com/mysqljs/mysql

0
Adiii