2015-11-22 10 views
18

Se ricordo male, usava mostrare "localhost" alcuni giorni fa. Non sono sicuro di ciò che è stato modificato che ha reso l'indirizzo server.address(). Return double colons (: :) invece. Ho letto qui che restituisce un indirizzo IPv6 (: :) se è disponibile ma è disabilitato sul mio PC. https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callbackNode.js server.address(). Indirizzo restituisce ::

+0

un hack ho implementato con successo: var host = server.address() l'indirizzo;. host = (host == '::')? 'Localhost': ospite; –

risposta

37

Come dicono i documenti,

iniziare ad accettare connessioni sulla porta e nome host specificato. Se il nome host è omesso, il server accetterà connessioni su qualsiasi indirizzo IPv6 (: :) quando IPv6 è disponibile, o qualsiasi indirizzo IPv4 (0.0.0.0) in caso contrario. Un valore di porta pari a zero assegnerà una porta casuale.

Così, il seguente codice sarebbe stampare running at http://:::3456:

var express  = require('express'); 
var app   = express(); 
var server = app.listen(3456, function() { 
    var host = server.address().address; 
    var port = server.address().port; 
    console.log('running at http://' + host + ':' + port) 
}); 

Ma se si aggiunge un nome host esplicito:

var server = app.listen(3456, "127.0.0.1", function() { 

Sarebbe stampare ciò che si vuole vedere: running at http://127.0.0.1:3456

Inoltre, è possibile utilizzare some IP lib come indicato in this answer

Con i migliori saluti, Alexander

+2

I valori letterali IPv6 negli URL devono essere circondati da parentesi quadre, ad es. 'http: // [::]: 3456' –

+0

Grazie, lo capisco meglio ora. Quello che ancora non capisco è perché sceglie IPv6 invece di IPv4 anche se ho IPv6 disabilitato sulla mia macchina? – Jake

+0

@Jake Non sono sicuro di disabilitare IPv6m, ma questo succede anche nelle vecchie versioni dei nodi (in particolare, 0.12) –

Problemi correlati