[解決済み] NodeJS:サーバーのポートを取得する方法は?
2022-04-25 14:15:50
質問
よくNodeのhello worldのサンプルで、Httpサーバーを作成し、ポートでリッスンを開始し、その後、以下のような行が続くというコードを見ます。
console.log('Server is listening on port 8000');
しかし、理想的には、このようにしたいものです。
console.log('Server is listening on port ' + server.port);
を呼び出す前に、サーバーが現在リッスンしているポートの番号を変数に格納せずに取得するにはどうしたらよいでしょうか。
server.listen()
?
この方法は以前見たことがあるのですが、Nodeのドキュメントには見当たりません。もしかしたら、express特有のものなのでしょうか?
どのように解決するのですか?
Express 4.xの回答です。
Express 4.x(以下のTien Doの回答による)では、app.listen()を非同期操作として扱うため、listener.address()はapp.listen()のコールバック内のデータのみを返します。
var app = require('express')();
var listener = app.listen(8888, function(){
console.log('Listening on port ' + listener.address().port); //Listening on port 8888
});
3つの答えを表現してください。
これ(エクスプレス特化?)を探しているのだと思います。
console.log("Express server listening on port %d", app.address().port)
ディレクトリ構造を作成する際に、このように(一番下の行を)見たことがあるかもしれません。
express
コマンドを実行します。
alfred@alfred-laptop:~/node$ express test4
create : test4
create : test4/app.js
create : test4/public/images
create : test4/public/javascripts
create : test4/logs
create : test4/pids
create : test4/public/stylesheets
create : test4/public/stylesheets/style.less
create : test4/views/partials
create : test4/views/layout.jade
create : test4/views/index.jade
create : test4/test
create : test4/test/app.test.js
alfred@alfred-laptop:~/node$ cat test4/app.js
/**
* Module dependencies.
*/
var express = require('express');
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.use(express.bodyDecoder());
app.use(express.methodOverride());
app.use(express.compiler({ src: __dirname + '/public', enable: ['less'] }));
app.use(app.router);
app.use(express.staticProvider(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.get('/', function(req, res){
res.render('index.jade', {
locals: {
title: 'Express'
}
});
});
// Only listen on $ node app.js
if (!module.parent) {
app.listen(3000);
console.log("Express server listening on port %d", app.address().port)
}
関連
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
JavaScriptのStringに関する共通メソッド
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?