191

次のコマンドを使用して、expressjs アプリケーションを作成しました。

express -e folderName
npm install ejs --save
npm install

でアプリケーションを実行するとnode app.js、次のエラーが発生します。

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: listen EADDRINUSE
    at errnoException (net.js:884:11)
    at Server._listen2 (net.js:1022:14)
    at listen (net.js:1044:10)
    at Server.listen (net.js:1110:5)
    at Object.<anonymous> (folderName/app.js:33:24)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)

修正方法は?

4

34 に答える 34

415

8080 などの同じポートを使用する別のサーバーを実行していました。

node app他のシェルで実行した可能性があります。閉じてから再度実行してください。

PORT番号を確認できます。使用可能または使用していない

netstat -tulnp | grep <port no>

または、 lsofを使用できます。

lsof -i :<port no>
于 2013-06-26T08:07:06.560 に答える
66

Express アプリを時々実行すると、同様のエラーが発生します。その場合も同様に従わなければなりません。ターミナルで実行されているかどうかを確認する必要があります。プロセスを見つけて強制終了する場合は、次の手順に従います。

  • ps補助 | grep ノード
  • プロセス ID (左から 2 番目) を見つけます。
  • kill -9 PRCOCESS_ID

また

単一のコマンドを使用して、実行中のすべてのノード プロセスを閉じます。

ps aux | awk '/node/{print $2}' | xargs kill -9
于 2013-10-14T03:20:25.677 に答える
13

これは、スクリプトの実行に使用しているポートが既に使用されているためです。その投稿を使用している他のすべてのノードを停止する必要があります。そのために、次の方法ですべてのノードを確認できます

ps -e

または、ノード プロセスのみを使用しますps -ef | grep node 。これにより、ID を持つすべてのノード プロセスのリストが得られます。

すべてのノードプロセスを強制終了する

sudo killall -9 node

または特定のIDの場合sudo kill -9 id

于 2016-12-27T13:49:15.667 に答える
9

だったポートを変更してバグを修正しました

app.set('port', process.env.PORT || 3000);<br>

そして次のように変更されました:

app.set('port', process.env.PORT || 8080);<br>
于 2014-09-29T20:22:22.343 に答える
3

ノードが使用しようとしているポートは、別のプログラムによって既に使用されている可能性があります。私の場合は、最近インストールしたntop でした。それを実現するには、ブラウザーでhttp://localhost:3000/を開く必要がありました。プロセスを見つける別の方法をここに示します。

于 2015-10-27T22:11:07.270 に答える
2

実行中の他のすべてのノード サーバーを閉じます。それらが他のターミナル ウィンドウにあるか、別のポートで実行されている場合でも同様です。これで問題は解決するはずです。

于 2013-08-08T02:29:57.450 に答える
0

そのポートを使用しているサービスを停止します。

sudo service NAMEOFSERVICE stop
于 2015-05-06T18:18:43.190 に答える
0

私の場合、この問題はnext()、expressjs の「use」メソッド呼び出しを呼び出すのを忘れたことが原因でした。

現在のミドルウェアが要求と応答のサイクルを終了しない場合、次のミドルウェアに制御を渡すために next() を呼び出す必要があります。そうしないと、要求はハングしたままになります。

http://expressjs.com/guide/using-middleware.html

于 2015-05-23T11:29:32.607 に答える
0

Gruntfile.js からポートを変更して再度実行することもできます。

于 2017-04-11T05:47:23.183 に答える
0

私の場合、私も走らなければなりませんでしたvagrant reload。仮想マシンで Express アプリを実行しているノード プロセスがない場合でも、vagrant ボックスをリロードするまでこのエラーが発生していました。

于 2014-07-04T22:29:22.100 に答える
-1

ポートを変更するだけで、現在のポートがiisまたは他のサーバーで使用されている可能性があります。

于 2016-12-16T10:36:50.483 に答える