2015-11-22 21 views
18

私が正しく覚えていれば、それは数日前に "localhost"を表示するために使用されました。私はserver.address()。addressが二重のコロン(::)を返すように変更したかどうかはわかりません。 ここでは、IPv6アドレス(::)が使用可能であればそれを返しますが、それは自分のPCで無効になっています。 ​​Node.js server.address()。address returns ::

+0

私は正常に実装しました:var host = server.address()。address;ホスト=(ホスト== '::')? 'localhost':ホスト; –

答えて

37

ドキュメントが言うように、

は、指定されたポートとホスト名でコネクションの受け入れを開始します。ホスト名が省略された場合、サーバーはIPv6が使用可能な場合はIPv6アドレス(::)、それ以外の場合はIPv4アドレス(0.0.0.0)で接続を受け入れます。ポート値が0の場合、ランダムなポートが割り当てられます。

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

をしかし、あなたは、明示的なホスト名を追加した場合::

ので、次のコードはrunning at http://:::3456を印刷し

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

は、それはあなたが見たいものを印刷します:running at http://127.0.0.1:3456

を指すようにsome IP libを使用する場合もあります

よろしくお願いいたします。アレクサンダー

+2

URLのIPv6リテラルは、角かっこで囲む必要があります。 'http:// [::]:3456' –

+0

ありがとうございました。私がまだ理解していないのは、私のマシンでIPv6が無効になっていても、なぜIPv4ではなくIPv6を選択しているのかです。 – Jake

+0

@Jake IPv6mを無効にすることについてはわかりませんが、これは古いノードのバージョンでも発生します(特に、0.12) –