Node.js は、サーバー側で JavaScript コードを実行する非常に人気のある JavaScript ランタイム環境です。 Node.js は、サーバー側コードの作成に関連する問題の多くを解決し、接続リクエストを待機し、リクエストを受け入れ、応答することができます。他のサーバー側プログラミング言語やフレームワークと同様に、Node.js も接続リクエストを受け入れるためにポートをリッスンする必要があります。ただし、デフォルトのポートが開けない場合がありますので、次にこの問題の解決策を見てみましょう。
まず、ポートの概念を明確にする必要があります。コンピュータ ネットワークでは、ポートはネットワーク通信の論理概念であり、コンピュータ ホスト上の複数のプロセスまたはアプリケーションがネットワーク リソースを共有できるようにするために導入されています。ポート番号は、0 ~ 65535 の範囲の 16 ビット数値です。サーバー側プログラミングでは、サーバー プロセスが特定の IP アドレスにバインドするときに使用するポート番号を指定する必要があります。クライアントがサーバーに接続する必要がある場合、対応する IP アドレスとポート番号を使用してサーバーと通信する必要があります。
Node.js のデフォルトのポートは 3000 です。コード内で HTTP サーバー インスタンスを作成し、そのポートでリッスンすることでポートを開くことができます:
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!'); }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); });
上記の例では HTTP サーバーを作成しますインスタンス を作成し、そのリスニング ポート番号を 3000
として指定しました。操作が成功した場合は、ブラウザに http://localhost:3000/
と入力してサーバーにアクセスできます。
ただし、次の理由が考えられるため、デフォルトのポートを開けない場合があります。
場合によっては、そのポート番号を使用するプロセスがすでに存在します。この場合、そのポート番号を使用してプロセスを終了するか、別のポート番号を使用する必要があります。 lsof
コマンドを使用して、ポートを占有しているプロセスを見つけることができます:
sudo lsof -n -i4TCP:3000 | grep LISTEN
出力は、ポートを占有しているプロセスのリストになり、その後、kill
コマンド これらのプロセスを終了します:
sudo kill <PID>
場合によっては、システム ファイアウォールがこのポートへのアクセスをブロックすることがあります。この時点で、ポートを通過するトラフィックを許可するようにファイアウォール ルールを構成する必要があります。具体的には、iptables
コマンドを使用してファイアウォール ルールを構成できます。
sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
これにより、3000
ポートを介した TCP トラフィックが許可されます。 UFW ファイアウォールを使用する場合は、ルールを同様に構成する必要があります:
sudo ufw allow 3000/tcp
場合によっては、一部の小さいポート番号 (1 ~ 1023 など) を使用する権限がないか、ポートを開くための十分な権限がない可能性があります。現時点では、sudo
コマンドを使用して、管理者権限で Node.js アプリケーションを実行する必要があります:
sudo node app.js
ネットワーク接続に問題がある場合、ポートが開かない可能性があります。この時点で、ネットワーク接続とルーターの設定が正しく機能していることを確認する必要があります。
一般に、Node.js のデフォルト ポートを開けない場合は、次のような理由が考えられます。さまざまな状況に応じて対処する必要があります。この記事が問題を解決し、優れた Node.js アプリケーションの開発に成功するのに役立つことを願っています。
以上がnodejsのデフォルトポートを開けませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。