Estoy ejecutando un servidor web en el nodo el código que figura a continuación

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

Y, a continuación, quiero hacer una petición get en el siguiente código

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

Estoy empezando con el nodo y yo aún no sé si este es el camino correcto.
Quiero probar el rendimiento de expresar y restify.He hecho un apache prueba de referencia por el código del servidor escribí y se encontró que contradicen los resultados que restify es mejor.Así que quiero probar algunas más por hacer llamadas a los servicios remotos y, a continuación, después de leer escribir a mongodb.El código de arriba es mi punto de partida.Estoy recibiendo el error

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

Estoy atleast título en la escritura de la dirección? ¿Cuál es el camino correcto para el tipo de pruebas a las que quiero? ¿Por qué obtengo el resultado restify más rápido de lo que expresa? Puede alguien que me guiara por el mejor punto de partida tutoriales para la aplicación en el nodo/express/columna vertebral y mongodb?

  • process.stdout.alwrite.now(d)
InformationsquelleAutor nnm | 2014-04-24

8 Comentarios

  1. 81

    getaddrinfo ENOTFOUND significa que el cliente no era capaz de conectarse a la dirección dada.
    Por favor, intente especificar el host sin http:

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

    Con respecto a los recursos de aprendizaje, no va a salir mal si usted comienza con http://www.nodebeginner.org/ y luego ir a través de algún buen libro para obtener más en profundidad en el conocimiento recomiendo Profesional Node.js , pero hay muchos por ahí.

    • getaddrinfo ENOUTFOUND means client was not able to connect... -> asegúrese de que usted consigue una respuesta al hacer ping a esa dirección el uso de un terminal o una petición.
    • Si usted tiene localhost como su anfitrión y aún así no funciona, revise su \etc\hosts archivo si tiene esta fila: 127.0.0.1 localhost.
    • Gracias @karol mate
  2. 13

    para mí fue debido a que en el archivo /etc/hosts el nombre de host no es añadido

    • ¿Qué nombre de host hizo agregar?
    • 127.0.0.1 localhost
  3. 12

    Compruebe el archivo de host que al igual que este

    ##
    # 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
    • Ya esta resuelto el problema para mí! Después de horas de búsqueda, me encontré con que el /etc/hosts archivo en mi mac estaba vacío! Después de cambiar el archivo en el mac, ejecutar sudo killall -HUP mDNSResponder para que los cambios surtan efecto!
    • Solucionado mi problema, gracias!
  4. 6

    No puedo explicar por qué, pero cambiando el parámetro de dirección url de tener localhost a 127.0.0.1 en mongodb.MongoClient.connect() método en Windows 10 resuelto el problema.

    • Algo similar trabajado en OSX sierra, he probado a conectar con MongoClient.connect(‘mongodb://localhost:27017/meanhotel’, function(err, db){……} Pero esto funcionó lugar: MongoClient.connect(‘mongodb://127.0.0.1:27017/meanhotel’, function(err, db){……}
  5. 2

    También tuve el mismo problema y me fijo por el uso de derecho de proxy.
    Por favor, revise su configuración de proxy si usted está utilizando el proxy de la red.

    Espero que esto le ayudará –

  6. 0

    tengo el mismo problema con el servidor Amazon puedo cambiar mi código para este

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

    de verificación de mysql nodo del módulo de
    https://github.com/mysqljs/mysql

  7. -1
    var http = require('http');
    var options = {     
    host: 'localhost',
    port: 80,
    path: '/broadcast'
    };
    var requestLoop = setInterval(function(){
    http.get (options, function (resp) {
    resp.on('data', function (d) {
    console.log ('data!', d.toString());
    });
    resp.on('end', function (d) {
    console.log ('Finished !');
    });
    }).on('error', function (e) {
    console.log ('error:', e);
    });
    }, 10000);
    var dns = require('dns'), cache = {};
    dns._lookup = dns.lookup;
    dns.lookup = function(domain, family, done) {
    if (!done) {
    done = family;
    family = null;
    }
    var key = domain+family;
    if (key in cache) {
    var ip = cache[key],
    ipv = ip.indexOf('.') !== -1 ? 4 : 6;
    return process.nextTick(function() {
    done(null, ip, ipv);
    });
    }
    dns._lookup(domain, family, function(err, ip, ipv) {
    if (err) return done(err);
    cache[key] = ip;
    done(null, ip, ipv);
    });
    };
    //Works fine (100%)
  8. -3

    Yo estaba corriendo en el mismo problema y después de un poco de ensayo y error descubierto que mi hosts archivo de personalización que estaba causando el problema.

    Mi localhost DNS se sobrescribe y debido a que un simple ping estaba fallando:

    $ ping http://localhost
    # ping: cannot resolve http://localhost: Unknown host

    Una vez que se resuelve la configuración de /private/etc/hosts archivo, ping localhost ha funcionado correctamente, y ya no era el error que estaban viendo:

    # Fatal error: getaddrinfo ENOTFOUND
    • Usted no puede hacer ping con http que es el puerto 80. Ping utiliza ICMP es el puerto 1. Puede hacer ping a localhost, aunque.

Dejar respuesta

Please enter your comment!
Please enter your name here