2011-01-06 14 views
9

Próbuję wykonać proste żądanie HTTP GET za pomocą node.js, ale mam problem z użyciem pliku node.js v0.3.4-pre (tj. Skompilowanego z HEAD od tego ranka). Oto mój kod:Wykonywanie żądania HTTP za pomocą node.js wyrzuca EAFNOSUPPORT

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

tu jest błąd, który pojawia się:

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) 
+0

Powtórne zgłoszenie formularza z powodu brzydkiej sieci Usunąłem pytanie, które zostało przez Ciebie połączone. –

Odpowiedz

12

znalazłeś błąd, siteUrl.port będzie undefined chyba URL jawnie nazwy portu. Tak, rozwiązaniem jest:

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

powinno być raczej

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

Ten sam komunikat o błędzie pojawił się na moim bardzo starym XPSP2-box dla dowolnego connect() - prób. E.g npm nie był w stanie nic zrobić, a proste żądania HTTP nie powiodły się.

Podczas próby znalezienia rozwiązania, ten post pojawił się w każdym miejscu, ale nie jest to ten sam problem.

W moim przypadku miało to związek z WSAIoctl (...) zawsze zwracając WSAEOPNOTSUPP podczas wysyłania zapytania do WSAID_CONNECTEX, co wydawało się dziwne. Doprowadziło mnie to do postu zalecającego wykonanie "resetowania winsets netsh" z cmd, co naprawiło problem!

Powiązane problemy