[解決済み] Node.js/Express.jsのアプリがポート3000で動作するのみ
質問
サーバー上で Node.js/Express.js アプリケーションを実行していますが、ポート 3000 でしか動作しないため、その原因を探っています。以下は、私が発見したことです。
-
ポートを指定せずに (
app.listen()
) を指定しない場合、アプリは実行されますが、Web ページはロードされません。 -
ポート 3001 で (
app.listen(3001)
) または使用されていないその他のポートでは、アプリは実行されますが、Web ページはロードされません。 - ポート 2999 では、他の何かがそのポートを使用しているため、アプリはエラーをスローします。
- ポート 3000 では、アプリは実行され、Web ページは問題なく読み込まれます。
Express アプリのデフォルトがポート 3000 であることは承知しています。しかし、不思議なことに、私のアプリは、ポート 3000 で実行するように明示的に指定したときのみ実行されます (
app.listen(3000)
).
の220行目で見つけました。
/usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
これは、先に述べたように、ポートを指定されたものに設定するか、何も指定されていない場合は3000に設定するということです。
8080 や 3001 などの別のポートでアプリを動作させるにはどうしたらよいでしょうか。
ありがとうございます。
編集:コードサンプル(とてもシンプルなNode/Expressアプリ)
var express = require("express");
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
// Only works on 3000 regardless of what I set environment port to or how I set [value] in app.set('port', [value]).
app.listen(3000);
どのように解決するのですか?
app.jsにこのようなものがあれば、以下のように動作します。
http.createServer(app).listen(app.get('port'),
function(){
console.log("Express server listening on port " + app.get('port'));
});
のように、欲しいポートを使うように明示的にコードをハードコーディングするか。
app.set('port', process.env.PORT || 3000);
このコードは、環境変数にポートを設定することを意味します。
PORT
である場合、またはそれが
undefined
であれば、それをリテラル
3000
.
または、環境を使ってポートを設定します。環境変数で設定することで
PRODUCTION
と
DEVELOPMENT
また、多くのPlatforms as a Serviceは、Expressの内部設定と同様に、その仕様に従ってポートを設定するために環境を使用します。以下は、環境のキーと値のペアを設定し、アプリを起動します。
$ PORT=8080 node app.js
あなたのコード例を参照すると、次のようなものが必要です。
var express = require("express");
var app = express();
// sets port 8080 to default or unless otherwise specified in the environment
app.set('port', process.env.PORT || 8080);
app.get('/', function(req, res){
res.send('hello world');
});
// Only works on 3000 regardless of what I set environment port to or how I set
// [value] in app.set('port', [value]).
// app.listen(3000);
app.listen(app.get('port'));
関連
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法