node.js - خطأ: getaddrinfo ENOTFOUND في nodejs للحصول على المكالمة




mongodb backbone.js (6)

أنا أقوم بتشغيل خادم الويب على عقدة الرمز الذي يرد أدناه

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

ثم أريد أن أحصل على طلب في الكود التالي

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

أنا بدأت للتو مع عقدة وأنا لا أعرف حتى إذا كان هذا هو الطريق الصحيح. أريد اختبار أداء التعبير السريع والتأكيد. لقد أجريت اختبارًا لمعيار Apache لرمز الخادم الذي كتبته ووجدت نتائج متناقضة أعيد تأكيدها بشكل أفضل. أريد اختبار المزيد من خلال إجراء مكالمات إلى خدمات بعيدة ثم بعد ذلك قراءة الكتابة إلى mongodb.The أعلاه رمز نقطة البداية. أنا أتلقى الخطأ

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

هل أنا على الأقل متجهة في اتجاه الكتابة؟ ما هي الطريقة الصحيحة لهذا النوع من الاختبارات التي أريدها؟ لماذا أحصل على النتيجة أعيد التأكيد بشكل أسرع من التعبير؟ يمكن لأي شخص أن يهدي إلى أفضل البرامج التعليمية نقطة البداية للتطبيق في العقدة / صريح / العمود الفقري والمونغب؟


لدي نفس المشكلة مع خادم الأمازون أغير الكود إلى هذا

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

تحقق وحدة الخلية العقدة https://github.com/mysqljs/mysql


getaddrinfo يعني ENOTFOUND العميل لم يكن قادراً على الاتصال بعنوان معين. يرجى محاولة تحديد المضيف بدون http:

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

فيما يتعلق بالموارد التعليمية ، لن تخطئ إذا بدأت مع http://www.nodebeginner.org/ ثم انتقلت من خلال كتاب جيد للحصول على معلومات أكثر عمقًا - أوصي بـ Professional Node.js ، ولكن هناك العديد من هناك.


تحقق ملف المضيف الذي مثل هذا

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

كما واجهت نفس المشكلة وقمت بإصلاحها باستخدام الوكيل الصحيح. يرجى التحقق مرة أخرى من إعدادات الخادم الوكيل إذا كنت تستخدم شبكة الخادم الوكيل.

ارجوا ان يساعدك هذا -


لا أستطيع أن أشرح لماذا ، ولكن تغيير معلمة url من وجود localhost إلى 127.0.0.1 على طريقة mongodb.MongoClient.connect() على نظام التشغيل Windows 10 تحل المشكلة.


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






restify