2012-02-09 7 views
8

私は単純なノードjs httpサーバーを持っています。ノードjsリッスン簡単なhttpサーバーのEADDRINUSEエラー

var http = require("http"); 

http.createServer(function(request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World"); 
    response.end(); 
}).listen(8888); 

私は

node basicserver.js 

を実行した場合、私は

node.js:201 
     throw e; // process.nextTick error, or 'error' event on first tick 
      ^
Error: listen EADDRINUSE 
    at errnoException (net.js:642:11) 
    at Array.0 (net.js:743:26) 
    at EventEmitter._tickCallback (node.js:192:40) 

を取得し、私はthisポストを見てきましたが、そのポストは、TCPサーバーではなく、HTTPサーバーに固有のようです。誰も助けてくれませんか?

答えて

22

あなたが聞いているポートは、すでに別のプロセスによって聴かれています。この場合、私はそれがあなたの自己だと感じています。 ps aux | grep nodeを実行し、kill <pid>を使用すると、ノードプロセスを強制終了できます。それ以外にも、別のポートを試すことができます。場合

--Update--

あなたがリッスンしているプロセスを見つけるしたい場合は、netstat -lpnを使用することができます(-lがリスニングポートを見つけることです、-pは、プロセス名とPIDを含めることです、-nホスト名を解決しない、そうでなければ遅くなる)、異なるポートでリッスンしているプロセスを見つけることができます。多すぎる場合は、netstat -lnp | grep :8888を実行できます。

また、fuser 8888/tcpを使用すると、プロセスPIDが表示されます。また、-kを追加すると、プロセスが最速で終了します。

私はこの2つのコマンドがlinuxでしか動作しないことを認識しました。

+0

私はとても愚かです。ありがとう。 – riship89

+0

実際、私はいくつかのゾンビの子プロセスでまったく同じ問題を抱えていました。 –

+0

FYI、 'nestat -lnp | grep:8888 'の例は' netstat'にタイプミスがあります – klamping

2

サーバーを実行しようとすると同じ問題が発生する可能性がありますが、root権限はありません。

6

私のマシン上のすべての実験を殺すために私のお気に入りは...

killall node 
0

私はまた、EADDRINUSE 127.0.0.1で、この問題に遭遇しました。 Nodeプロセスをチェックした後、私はサーバipを 'localhost'に変更しました。これをした後、それはすぐに始まりました。お役に立てれば。

関連する問題