2011-01-06 9 views
9

Sto provando a fare una semplice richiesta HTTP GET usando node.js, ma ho problemi con l'uso di node.js v0.3.4-pre (cioè compilato da HEAD da questa mattina). Ecco il mio codice:Fare una richiesta HTTP usando node.js lancia 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); 
        }); 
      }); 
    }); 

Ecco l'errore che ottengo:

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

Invio di moduli duplicati a causa di una rete di merda, ho eliminato la domanda a cui ti sei collegato. –

risposta

12

trovato il bug, siteUrl.port sarà undefined a meno che l'URL esplicitamente i nomi di una porta. Quindi, la soluzione è:

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

dovrebbe piuttosto essere

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

Lo stesso messaggio di errore apparso sul mio molto vecchio XPSP2-box per QUALSIASI Connect() - tentativi. E.g npm non è stato in grado di fare nulla e le semplici richieste http non sono riuscite.

Durante il tentativo di trovare una soluzione, questo post è apparso dappertutto, ma non è lo stesso problema.

Nel mio caso ha avuto a che fare con WSAIoctl (...) restituendo sempre WSAEOPNOTSUPP durante la query per WSAID_CONNECTEX, che sembrava strano. Questo mi ha portato ad un post che consigliava di eseguire un "reset netsh winsock" dal cmd, che ha risolto il problema!

Problemi correlati