サーバーで実行されているNode.js / Express.jsアプリがポート3000でのみ動作し、その理由を理解しようとしています。これが私が見つけたものです:
- ポート(
app.listen()
)を指定しないと、アプリは実行されますが、Webページは読み込まれません。 - ポート3001(
app.listen(3001)
)または使用されていないその他のポートでは、アプリは実行されますが、Webページは読み込まれません。 - 他の何かがそのポートを使用しているため、ポート2999でアプリはエラーをスローします。
- ポート3000でアプリが実行され、ウェブページが正常に読み込まれます。
Expressアプリはデフォルトでポート3000に設定されています。しかし、奇妙なことに、私のアプリは、明示的にポート3000(app.listen(3000)
)で実行させた場合にのみ実行されます。
私はこれを220行目で見つけました/usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
これは前述のとおりです。ポートを指定されたものに設定するか、何も指定されていない場合は3000に設定します。
8080や3001などの別のポートでアプリを動作させるにはどうすればよいですか?
ありがとう!
編集:コードサンプル(非常に単純なノード/ 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);
.listen()
。上記の「アプリの実行」は、「アプリの実行中にエラーは発生しません」と同じことです。「ウェブページがロードされない」と言うと、「ブラウザからアクセスできません」と同じことです。同じマシン(私のサーバー)からのすべてのアクセス。フィードバックをお寄せいただきありがとうございます。
$ supervisor app.js
または$ PORT=[PORT] node app.js
環境ポート変数を設定したいとき。コードサンプルを載せます。
port
はによって必要とされる.listen()
ので、これなしでは行かないでください。2)アプリケーションの実行時にエラーが発生していますか?それとも、ブラウザからアクセスできないように見えるだけですか?3)あなたが同じマシン上でWebサイトにアクセスしようとしているlocalhost:3000
、localhost:3001
など?1台のクライアントと1台のサーバーの2台のマシンを使用している場合は、サーバーのファイアウォールに例外を追加して、ノードがクライアントからのリクエストを受信できるようにする必要があります。