1. ホーム
  2. node.js

[解決済み] NodeJS - エラー: リスン EADDRNOTAVAIL: アドレスが使用できません。

2022-03-04 19:07:28

質問

私はローカルサーバーでホストされるべきNodeアプリを実行しています。 現在、私はプレーンテキストのレスポンスだけを送信しています。

const http = require('http');

var server = http.createServer(function(req, res) {
  res.writeHead(200, {ContentType: 'text/plain'});
  res.end("test");
});

ローカルホストにリスンすると、すべてがうまくいき、ブラウザからリクエストを送信することができます。

server.listen(3000, '127.0.0.1'); // works fine, on the same machine

しかし、ルーターのIPを入力してLANネットワークのポートをリッスンしようとすると、エラーになります。

server.listen(3000, '192.168.0.1'); // causes an error

Error: listen EADDRNOTAVAIL: address not available 192.168.0.1:3
000
    at Server.setupListenHandle [as _listen2] (net.js:1253:19)
    at listenInCluster (net.js:1318:12)
    at doListen (net.js:1451:7)
    at process._tickCallback (internal/process/next_tick.js:63:1
9)
    at Function.Module.runMain (internal/modules/cjs/loader.js:7
57:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
Emitted 'error' event at:
    at emitErrorNT (net.js:1297:8)
    at process._tickCallback (internal/process/next_tick.js:63:1
9)
    [... lines matching original stack trace ...]
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

公開IPアドレスで試したのですが失敗しました。 LANサーバーのポートをリッスンして、ネットワーク上のどのコンピューターからでもリクエストを送れるようにする方法はないでしょうか?
また、将来的には、どのLANネットワーク上のどのコンピュータでも私のアプリケーションが動作するようにしたいのです。どのようにしてホストを動的に追加することができますか?

解決方法は?

これを試してみてください

server.listen(3000, '0.0.0.0');

他のマシンから自分のnodeアプリケーションにアクセスできる

LANのIPが192.168.0.101の場合、他のマシンから192.168.0.101:3000をブラウズすることができます。