Error: listen EADDRINUSE: address already in use:::3000 at Server.setupListenHandle[as listen 2]エラー解決方法

4559 ワード

1.問題が発生


ケース


nodeの実行

node<ファイル名>


ターミナルウィンドウに入力すると、次のエラーが発生します.
node:events:368
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (node:net:1319:16)
    at listenInCluster (node:net:1367:12)
    at Server.listen (node:net:1454:7)
    at Object.<anonymous> (/Users/dy/Downloads/node.js-mysql-1/main.js:151:5)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
    at node:internal/main/run_main_module:17:47
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1346:8)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 3000
}

2.原因の特定


エラーの内容は、ノードが3000ポートで実行されていることです.
でもctrl+cで途切れたのに…?
エラーを繰り返し、グーグルゲームを続けます.
次は私が作ったことがありますが、やったことがありません.△文章を読んでいる人は、次のリストの中の1つになるかもしれませんので、試してみてください.
  • 端末再起動
    最も簡単で、最も解決しにくい誤り.
  • Visual Studioシャットダウン再起動
    同じように解決できない.
  • プロセスのpidを理解して殺す
  • 右奮闘、ウィンドウpid値を知るコマンド
  • $ ps -ef | grep app.js
    // ubuntu    7755<pid >  7025  0 08:10 pts/0    00:00:00 node app.js
    $ kill -9 7755 <pid >
    
  • Linux,macユーザpid値指令
  • $ sudo lsof -i 3000:
    //위 명령어를 치면 > 어쩌구 pid 값 어쩌구~~가 나온다.
    $ sudo kill -9 <pid >

    3.トラブルシューティング


    理由:pm 2はバックグラウンドで3000ポートで稼働している
    ノートパソコンを再起動してから、ノードがバックグラウンドで動作しているかどうかを疑い始めます.
    そうですね.ctrl+cで終了したpm 2は正常に動作していると考えられる.ノードにpm 2をインストールして実行しましたが、エラーが発生するとは思いませんでした...
    Googleでpm 2を閉じる方法を説明しました.
    pm2 kill
    入力するとpm 2は本当に閉じます.
    以下のターミナルビルの写真を添付します.

    では、なぜpm 2は終了せずに稼働しているのでしょうか.
    この機会にpm 2をまとめてみましょう!(やっぱり間違いはプレゼント…?)

    4. pm2


    PM 2ホームページで定義されているPM 2
    PM2 is a daemon process manager that will help you manage and keep your application online. Getting started with PM2 is straightforward, it is offered as a simple and intuitive CLI, installable via NPM.

    PM 2はNodeです。jsアプリケーションのProcess Managerを簡単に管理できます。Node.jsアプリケーションがクラスタモードで実行されたり、メモリがオーバーフローしたり、エラーによってプロセスが終了したりする場合、各状況はユーザーが処理する可能性がありますが、これは複雑すぎて注意すべきことが多くなります。


    PM 2を使用すると、簡単な設定でこれらの問題を簡単に解決できます.
    見えない場所で分子を選んだ鬼は、幽霊から霊感を得た.
    家ではテレビのような製品は電源を切ってから開くことができますが、冷蔵庫(デーモンプロセス)のような製品はずっと働いているのではないでしょうか.
    そのため、Disk And Execution MONitorで自分の意味を表現することもあります.
    すなわち、Linuxでは、daemonはサービスリクエストに応答するために長期にわたって実行されるバックグラウンドプロセスである.「d」で終わるプロセスが最も代表的である.ex) udisksd, gvfsd, systemd, logind, cron

    参考文献


    pm 2のブログの詳細(https://armadillo-dev.github.io/javascript/nodejs/node-js-pm2/)
    デーモンプロセスの理解(https://velog.io/@jewon119/01.%EB%A6%AC%EB%88%85%EC%8A%A4-%EA%B8%B0%EC%B4%88-%ED%95%AD%EC%83%81-%EC%8B%A4%ED%96%89daemon)
    デーモンプロセスの説明
    ( https://velog.io/@zoo81001/Linux-Daemon )