web-dev-qa-db-ja.com

Node.js server.address()。addressが返す::

私の記憶が正しければ、数日前に「localhost」が表示されていました。何が変わってserver.address()。addressが二重コロン(::)を返すようになったのかわかりません。ここでは、IPv6アドレス(::)が使用可能であれば返されますが、私のPCでは無効になっていることを読みました。 https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback

24
Jake

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

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

したがって、次のコードは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)
});

ただし、明示的なホスト名を追加する場合:

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

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

また、 this answer で示されているように IP lib を使用することもできます。

よろしく、アレクサンダー