web-dev-qa-db-ja.com

Node.js websocketエラー「エラー:EADDRNOTAVAILエラーをリッスン:EADDRNOTAVAILをリッスン」

アプリケーションはlocalhostで正常に動作しますが、サーバーへの接続時にエラーが発生します。
ポート22を介してサーバーに接続します

これはエラーです

Error: listen EADDRNOTAVAIL Error: listen EADDRNOTAVAIL
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at net.js:1146:9
at dns.js:72:18
at process._tickCallback (node.js:419:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:906:3

助けて!!!

-更新-

走る netstat -tulpn | grep 22

結果:

 tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      683/sshd
 tcp6       0      0 :::22                   :::*                    LISTEN      683/sshd

しかし、私はnetstat -tulpn | grep 80

何も表示されません。

このサーバーに障害がありますか?

ランニング netstat -nlt

     Active Internet connections (only servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN
     tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN
     tcp        0      0 127.0.0.1:5902          0.0.0.0:*               LISTEN
     tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN
     tcp        0      0 0.0.0.0:6002            0.0.0.0:*               LISTEN
     tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
     tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
     tcp6       0      0 :::22                   :::*                    LISTEN
     tcp6       0      0 ::1:631                 :::*                    LISTEN

ランニング netstat -anp | grep :80

     tcp        1      0 162.243.145.226:60728   91.189.94.25:80         CLOSE_WAIT  1726/ubuntu-geoip-p
     tcp        1      0 162.243.145.226:47842   74.125.239.148:80       CLOSE_WAIT  8104/epiphany-brows
     tcp        1      0 162.243.145.226:60727   91.189.94.25:80         CLOSE_WAIT  1417/ubuntu-geoip-p
     tcp        1      0 162.243.145.226:58818   198.41.30.199:80        CLOSE_WAIT  8104/epiphany-brows
8
hash

使用済みのポートを使用しています。ポートを変更するか、ポートで待機しているプロセスを強制終了する必要があります。ターミナルを開いて書きます(例):lsof -i :22またはlsof -i :80またはlsof -i :8000およびkill PIDプロセスの。


Total.jsのリスニング[〜#〜]ポート[〜#〜]を変更する方法は?

  1. / app/configまたは/ app/config-releaseまたは/ app/config-debug
default-ip       : 127.0.0.1
default-port     : 8000

または

// For e.g. Heroku
default-ip       : auto
default-port     : auto
  1. 存在するファイルの場合:release.jsまたはdebug.js
var fs = require("fs");
var options = {};

// options.ip = "127.0.0.1";
// options.port = parseInt(process.argv[2]);
options.port = 8000;
  1. 存在する場合のみindex.js
// for development:
require('total.js').http('debug', { port: 8000 });

// or for production:
require('total.js').http('release', { port: 8000 });

感謝とドキュメント: http://docs.totaljs.com

6
Peter Sirka

今日これを見ただけです。ユーザーが127.0.0.1 localhostファイルで/etc/hostsをコメントアウトし、別のネットワークサービスがlocalhostを別のIPアドレスに解決していたnotユーザーのマシンに関連付けられていた。

解決策は、この行を/etc/hostsに追加することでした

127.0.0.1 localhost
4
Cory Klein

UnixベースのOSを使用していると思います。その場合、Sudoアクセスなしで1024未満のポートを使用することはできません。

また、深く掘り下げる前に、リスニングポートが他のプロセスで使用されていないことを確認してください。

クイックフィックス(開発のみ):

  • _Sudo node file.js_または
  • server.listen(3000); // any number > 1024

本番用(rootアクセスで本番環境でノードを実行しないでください)

iPテーブルを使用して、リスニングポート(例:3000)を80にマップする必要があります。

_Sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
_
3
Mahmoud.Mahfouz

ポート22はssh用に予約されており、既知のポートのリストで確認してください http://en.wikipedia.org/wiki/Port_(computer_networking)#Common_port_numbers

ポート8000​​〜9000で開発用のノードアプリを実行することをお勧めしますが、登録済みのポート範囲から任意のものを使用できます。

1
Michael