تقديم طلب HTTP باستخدام Node.js يلقي eafnosupport

StackOverflow https://stackoverflow.com/questions/4617541

  •  26-09-2019
  •  | 
  •  

سؤال

أحاول تقديم طلب HTTP بسيط باستخدام Node.js ، لكنني أواجه مشكلة في استخدام Node.js v0.3.4-pre (أي تم تجميعها من الرأس اعتبارًا من هذا الصباح). هذا هو الكود الخاص بي:

    var cli = require('cli');
    var http = require('http');
    var url = require('url');

    cli.parse();

    cli.main(function(args, opts) {
            this.debug(args[0]);

            var siteUrl = url.parse(args[0]);
            var site = http.createClient(siteUrl.port, siteUrl.host);
            console.log(siteUrl);

            var request = site.request("GET", siteUrl.pathname, {'host' : siteUrl.host})
            request.end();

            request.on('response', function(response) {
                    response.setEncoding('utf8');
                    console.log('STATUS: ' + response.statusCode);
                    response.on('data', function(chunk) {
                            console.log("DATA: " + chunk);
                    });
            });
    });

هذا هو الخطأ الذي أحصل عليه:

node.js:68
      throw e; // process.nextTick error, or 'error' event on first tick
      ^
Error: EAFNOSUPPORT, Address family not supported by protocol family
    at doConnect (net.js:499:19)
    at Client.connect (net.js:652:30)
    at Client._ensureConnection (http.js:1033:10)
    at Client.request (http.js:1048:8)
    at Object.<anonymous> (/Users/paul/Desktop/readify.js:16:21)
    at /usr/local/lib/node/.npm/cli/0.2.3-2/package/cli.js:995:18
    at Object.main (/usr/local/lib/node/.npm/cli/0.2.3-2/package/cli.js:1000:9)
    at Object.<anonymous> (/Users/paul/Desktop/readify.js:10:5)
    at Module._compile (node.js:359:32)
    at Object..js (node.js:367:14)
هل كانت مفيدة؟

المحلول

وجدت الخطأ ، siteUrl.port سوف يكون undefined ما لم يسمي عنوان URL صراحة المنفذ. لذلك ، الحل هو:

var site = http.createClient(siteUrl.port || 80, siteUrl.host);

نصائح أخرى

var site = http.createClient(siteUrl.port, siteUrl.host);

يجب أن يكون بالأحرى

var site = http.createClient(siteUrl.port || 80, siteUrl.hostname);

ظهرت رسالة الخطأ نفسها على صندوق XPSP2 القديم جدًا لأي محاولات Connect (). على سبيل المثال ، لم تتمكن NPM من فعل أي شيء ، وفشلت طلبات HTTP البسيطة.

أثناء محاولة العثور على حل ، ظهر هذا المنشور في كل مكان ، ولكنه ليس نفس المشكلة.

في حالتي ، كان الأمر يتعلق بـ WSAIOCTL (...) دائمًا ما يعيد wsaeopnotsupp عند الاستعلام عن wsaid_connectex ، والذي بدا غريباً. قادني ذلك إلى منشور أوصي بعمل "إعادة ضبط Netsh Winsock" من CMD ، والتي حددت المشكلة!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top