2015-09-15 13 views
12

Seguendo l'esempio standard di ExpressJs ciao, ottengo un host di '::'.L'host dell'indirizzo del server Expressjs non restituisce nulla

Perché succede? Esempio parola

ciao:

var server = app.listen(3000, function() { 
    var host = server.address().address; 
    var port = server.address().port; 

    console.log('Example app listening at http://%s:%s', host, port); 
}); 

ho trovato un suggerimento che è stato aggiungere 'localhost' dopo il parametro porta. Ha risolto quando stavo guardando solo il mio pc, ma non funzionerà sulla rete. Cosa dovrei fare?

+0

Provi questo dai documenti? http://expressjs.com/starter/hello-world.html –

+0

@LucasCosta Sì, l'ho fatto. –

+0

Ho esattamente lo stesso problema. –

risposta

6

ho provato l'esempio e aveva la stessa uscita per hostname '::', ho fatto la seguente modifica come una soluzione:

var server = app.listen(3000, 'localhost', function() { 
    var host = server.address().address; 
    var port = server.address().port; 
    console.log('Example app listening at http://%s:%s', host, port); 
}); 

uscita:

Esempio applicazione ascolto a http://127.0.0.1:3000

+0

Sì, l'ho già fatto, ma non è disponibile in rete. Hai provato ad accedere all'IP della macchina con un altro PC/smartphone/tablet? –

+0

Nel mio esempio sto impostando localhost come indirizzo quindi Se hai bisogno che sia disponibile per la rete puoi provare a impostare il tuo indirizzo IP della macchina invece di localhost e provarlo? – lsampaio

+0

l'ho fatto prima di venire qui ... Funziona bene, ma in passato expressJS ci fornisce l'indirizzo di rete automaticamente –

7

Per il codice

var server = app.listen(3000, function() { 

senza un parametro di indirizzo in la funzione listen, il nodo lo vincolerà a qualsiasi indirizzo, correlato all'indirizzo 0.0.0.0 di IPV4 e corrispondente a :: in IPV6. E questo IPv6 indirizzo non specificato, 0:0:0:0:0:0:0:0, si riduce a ::,

Dopo aver eseguito netstat -a

TCP [::]:3000    CP-Q10001:0  LISTENING 

Sappiamo che il server del nodo di ascolto su indirizzo :: con porta 3000.


Fare riferimento alla http.listen che express.js utilizzato in here

app.listen = function listen() { 
    var server = http.createServer(this); 
    return server.listen.apply(server, arguments); 
}; 

Se il nome viene omesso, il server accetterà connessioni su qualsiasi indirizzo IPv6 (: :) quando IPv6 è disponibile, o qualsiasi Indirizzo IPv4 (0.0.0.0) altrimenti.

+0

ma perché restituisce in bianco?Non dovrebbe essere un indirizzo IP di qualche tipo? –

+0

@GeorgeMauer, il risultato è 'http: // ::: 3000', e' :: 'è l'indirizzo IP di' IPV6', non _blank_ penso. – zangw

+0

In passato funziona bene con http://127.0.0.1:3000 ma, dopo alcuni giorni, si è fermato e non si è più mostrato :( –

0

Questo vi darà i risultati che state cercando. Non dovresti includere "localhost"

var server = app.listen(3000, function() { 
    var port = server.address().port; 
    require('dns').lookup(require('os').hostname(), function (err, add, fam) { 
     debug('Example app listening at http://%s:%s', add, port); 
    }) 
}); 
Problemi correlati