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 ::
risposta
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
I valori letterali IPv6 negli URL devono essere circondati da parentesi quadre, ad es. 'http: // [::]: 3456' –
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
@Jake Non sono sicuro di disabilitare IPv6m, ma questo succede anche nelle vecchie versioni dei nodi (in particolare, 0.12) –
un hack ho implementato con successo: var host = server.address() l'indirizzo;. host = (host == '::')? 'Localhost': ospite; –