web-dev-qa-db-ja.com

ExpressJS - 未処理エラーイベントをスローします。

次のコマンドを使用して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)

それを修正するには?

170
JR Galia

8080のように同じポートを使用して別のサーバーを実行していました。

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

ポート番号を確認できます。使用可能または使用されていません

netstat -tulnp | grep <port no>
388
Glowin

私たちは時々私たちのエクスプレスアプリを実行するときに私たちは同様のエラーを取得します。その場合も同様にしなければなりません。どの端末でも実行されているかどうかを確認する必要があります。プロセスを見つけて強制終了したい場合は、次のステップに従ってください。

  • ps aux grepノード
  • プロセスIDを見つけます(左から2番目)。
  • -9 PRCOCESS_IDを強制終了する

または

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

ps aux | awk '/node/{print $2}' | xargs kill -9
57
monical

インスタンスはおそらくまだ実行中です。これで修正されます。

killall node

更新:このコマンドはLinux/UbuntuとMacでのみ動作します。

24
TawabG

Linuxを使用している場合、この問題はNodejsがrootとして実行されていない場合にも発生する可能性があります。

これから変更します。

nodejs /path/to/script.js

これに:

Sudo nodejs /path/to/script.js

ちょうど私に起こりました、そして、ここで他の提案のどれもそれを直しませんでした。幸運なことに、rootとして実行したときにスクリプトが先日動作していたことを思い出しました。これが誰かに役立つことを願っています!

免責事項:これはおそらく本番環境に最適な解決策ではありません。 rootとしてあなたのサービスを開始することはあなたのサーバー/アプリケーションにいくつかのセキュリティホールを導入するかもしれません。私の場合、これはローカルサービスの解決策でしたが、原因を特定するために他の人にもう少し時間をかけてもらうことをお勧めします。

14
CauselessEffect

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

ps -e

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

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

Sudo killall -9 node

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

11

私はあったポートを変更することによってバグを修正しました

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

そしてに変更しました:

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

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

3
Fabien

これはあなたのファイルが今走っていることを意味します。以下のコードを入力してもう一度お試しください。

Sudo pkill node
2

同じポート番号を使用したい場合は、端末にkill %と入力してください。これにより、現在のバックグラウンドプロセスが強制終了され、ポートが解放されて使用できるようになります。

2
Suneha Javid

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

1
Jake McGuire

3000(エクスプレススケルトンセットアップで使用されるデフォルト)をリッスンしているすべてのノードインスタンスと他のサービスを無効にしようとした場合は、あなたの環境が 'port'を予期しないものに定義していないことを確認してください。それ以外の場合は、おそらく同じエラーが発生します。 express skeletonのapp.jsファイルの15行目に気付くでしょう。

app.set('port', process.env.PORT || 3000);
1
Mark

これを解決するには、実行しているサーバーを終了するか閉じます。 Eclipse IDEを使用している場合は、これに従ってください。

実行>デバッグ

enter image description here

実行中のプロセスを右クリックし、終了をクリックします。

1
Prashanth Sams

私は同じ問題を抱えていました、そして私が以前CTRL + Cでキャンセルしたnodejsプロセスがまだ実行中であることを知りました。 Windows 10の問題は、 Ctrl + Cで正常に終了しないことです 。タスクマネージャを開き、手動でプロセスを強制終了しました。 GitHubで提供されている解決策は私にとってはうまくいきませんでした。

0

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

Sudo service NAMEOFSERVICE stop
0
Rick

- > 8080番ポートで何が実行されているのか、または何をチェックしたいのかを確認します。

lsof -i @localhost:8080

何かが実行されている場合は、uを閉じるか、またはkillコマンドを使用して閉じます。

0
rabiaasif

答えのどれも私のために働きませんでした。

コンピュータを再起動したときに、サーバを起動して実行することができました。

マック
shutdown now -r

Linux
Sudo shutdown now -r

0
tmmgarcia

同じプロセスを複数回強制終了し、ポート8000​​で他に実行されていたものを見つけることができなかった後、私はポート8000​​で2回実行しようとしていたことに気づきました。

前:

MongoClient.connect(db.url, (err, database) => {
  if (err) return console.log(err);
  require('./app/routes')(app, database);

  app.listen(port, () => {
    console.log('We are live on ' + port);
  });
});

require('./app/routes')(app, {});
app.listen(port, () => {
  console.log("We are live on " + port);
});

後:

MongoClient.connect(db.url, (err, database) => {
  if (err) return console.log(err);
  require('./app/routes')(app, database);

  app.listen(port, () => {
    console.log('We are live on ' + port);
  });
});

require('./app/routes')(app, {});
0
Andrew Southard

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

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

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

0
Andrew Dwyer

このエラーの理由

指定したポートで他のプロセスが既に実行されています

シンプルで迅速なソリューション

Linux OSでは、たとえば、ポートとして3000を指定しました

  • ターミナルを開き、lsof -i :3000を実行します。いずれかのプロセスがポート3000で既に実行されている場合、コンソールにこの印刷が表示されます
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    16615 aegon   13u  IPv6 183768      0t0  TCP *:3000 (LISTEN)
  • 出力からPID(プロセスID)をコピーします

  • Sudo kill -9 16615を実行します(-9の後にPIDを入力する必要があります)

  • サーバーを再起動します
0
Hadi Mir

これは私のために働きました。

http://www.codingdefined.com/2015/09/how-to-solve-nodejs-error-listen.html

プロジェクトプロパティからポート番号を変更するだけです。

0
mukulsharma1146

events.js:183投げました。 //未処理の 'error'イベント

私はまた同じ種類の問題を得、多くの方法を試みたが、ついにこれを得た、これはうまくいく

npm install [email protected] --save-dev --save-exact

より明確にするためにこのリンクを参照してください https://github.com/ionic-team/ionic-cli/issues/2922

0
Janith Udara

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

0

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

0
cbaigorri

Windowsを使用している場合は、node.jsのタスクマネージャからプロセスを終了できます。

0
CodeRider

実際にはCtrl + Cキーはノードプロセスによって使用されるポートを解放しません。だから、このエラーがあります。この問題の解決策は、server.jsで次のコードスニペットを使用することでした。

process.on('SIGINT', function() {
  console.log( "\nGracefully shutting down from SIGINT (Ctrl-C)" );
  // some other closing procedures go here
  process.exit(1);
});

これは私のために働きました。

NodeJSで グレースフルシャットダウンで言及されている他の解決策をチェックすることもできます

0
Pankaj Shinde

Visual Studio Codeで端末を確認するだけです。ノードアプリを実行していて、ラップトップを休止状態にしてから、翌朝、ソフトウェアの開発に戻ります。再度コマンドnodemon app.jsを実行すると、最初は夜間から実行され、2番目は2番目のコマンドを実行して最新のコマンドを実行したため、2つのコマンドプロンプトが同じポートをリッスンしているため、この問題が発生しています。 1つの端末またはすべての端末を単純に閉じてから、ノードapp.jsまたはnodemon app.jsを実行します

0
zaib