web-dev-qa-db-ja.com

エラーからローカルホストを解放する方法:EADDRINUSEをリッスンする

私はWindows 7でnodejsで書かれたサーバーをテストしていますが、コマンドラインでテスターを実行しようとすると次のエラーが発生します

Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)

再起動せずに修正するにはどうすればよいですか?

111
adam

サーバーをバインドしようとしているアドレスが使用中であることを意味します。別のポートを試すか、そのポートを使用してプログラムを閉じます。

94
fent

実行:

ps -ax | grep node

次のようなものが得られます:

60778 ??         0:00.62 /usr/local/bin/node abc.js

それから:

kill -9 60778
160
Komposr

Linuxの場合(少なくともUbuntu派生物)

killall node

この形式よりも簡単です。

ps | grep <something>
kill <somepid>

ポートを保持している孤立した子がある場合は、どちらも機能しません。代わりに、これを行います:

netstat -punta | grep <port>

ポートが保留されている場合、次のようなものが表示されます。

tcp           0      0.0.0.0:<port>          0.0.0.*       LISTEN     <pid>/<parent>

Pidで強制終了します。

kill -9 <pid>
36
WolfReporter

次のコマンドは、実行中のノードプロセスのリストを表示します。

ps | grep node

そのポートを解放するには、次を使用してプロセスを停止します。

kill <processId>
35
wcurtis

アプリケーションが使用するポートが別のプロセスによって占有されているため、エラーEADDRINUSEが発生しています。このポートを解放するには、占有プロセスを終了する必要があります。

Windowsにいるため、コマンドプロンプト(cmd)を使用してプロセスを終了できます。 cmdを使用すると、ブロッキングアプリケーションのプロセスID(PID)を検出できます。プロセスを終了/強制終了するには、PIDが必要です。

ここにステップバイステップガイドがあります...

  1. 指定されたポート(この例では、ポートは「3000」)で実行されているすべてのプロセスを検索します。

    netstat -ano | 「:3000」を検索

  2. netstatコマンドは、指定されたポートで実行されているすべてのプロセスをリストします。 netstatの結果の最後の列には、PIDsが表示されます(この例では、PIDは「8308」です)。次のコマンドを実行すると、特定のPIDの詳細を確認できます。

    タスクリスト/ fi "pid eq 8308"

  3. プロセスを終了する場合は、PIDを使用して次のコマンドを使用します(この例では、PIDは「8308」です)。

    taskkill/pid 8308/f

スクリーンショット

enter image description here

27

サーバーがport 3000で実行されているとします

lsof -i tcp:3000
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    node    11716 arun   11u  IPv6 159175      0t0  TCP *:3000 (LISTEN)

その後、kill -9 <pid>を使用します

上記の場合Sudo kill -9 11716

15
Arun Kasyakar

以下のコマンドを使用して、特定のポートで実行されているプロセスを強制終了します-この例では3000

kill -9 $(lsof -t -i:3000)
10
Atta Ur Rahman

私のために働いた1つの可能な解決策は、ブラウザのウィンドウを閉じるだけで、対応する「 http:// localhost:3000 / 」スクリプトが実行されていました。

7
iloo

エラーが発生したとき

エラー:EADDRINUSEをリッスンします

コマンドプロンプトを開き、次の指示を入力します。

netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>

その後、電話ギャップインターフェイスを再起動します。

Phonegapが使用しているプロセスIDを知りたい場合は、TASK MANAGERを開き、列見出しPIDを見て、PID番号を見つけます。

6
Eshan Chattaraj

Patrickによって提案された前述のkillall -9ノードは期待どおりに機能し、問題を解決しますが、kill -9が最適な方法ではない理由について、この答えの編集部分を読むことをお勧めします。

さらに、すべてのアクティブなプロセスをやみくもに殺すのではなく、単一のプロセスをターゲットにしたい場合があります。

その場合、まずそのポートで実行されているプロセスのプロセスID(PID)を取得します(たとえば8888):

lsof -i tcp:8888

これは次のようなものを返します:

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node     57385   You   11u  IPv6 0xac745b2749fd2be3      0t0  TCP *:ddi-tcp-1

(リッスン)それからただ(ps-実際にはしません。以下を読んでください):

kill -9 57385
4

app.jsまたはurプロジェクト構成ファイルでポートを変更できます。

デフォルト(「ポート」、80)

ポート80がすでに使用されているかどうかを確認するには、次のようにします。

netstat -antp | grep 8

netstat -antp | grep node

ノードプロセスが既に実行されているかどうかを確認できます。

ps -ef | grep node

既に実行されていることがわかった場合は、次を使用して強制終了できます。

killallノード

3
Adeel Ahmad

プロセスIDを確認する

須藤lsof -i:8081

特定のプロセスを殺すより

須藤キル-9 2925

enter image description here

2
Surender Kumar

これはMacで動作します:

ステップ1。

Sudo lsof -i tcp:3000 (or whatever port you want to kill)

上記のコマンドは、現在ポートを保持しているプロセスIDを提供します。

ステップ2。

Kill -9 <pid>
2
saran3h

学習しながら、同じポート8081でリッスンし、同じコードから実行する2つのサーバーを作成しました

最初のサーバー作成シャッドが機能しました

node.jsのコールバック遅延は、どちらも機能しない、または2番目のサーバー作成に例外があり、プログラムが終了した理由の可能性があります。そのため、1番目のサーバーも閉じられます。

2サーバーの問題のヒント、私は以下から得ました: エラーの修正方法:nodejsの使用中にEADDRINUSEをリッスンしますか?

エラー:EADDRINUSEをリッスンして、ターミナルnetstat -nptlで実行するUbuntuで解決します。このkill -9 {process-number}の後、このコマンドはノードプロセスを強制終了し、node server.jsコマンドを再度実行できます。

Ex

eADDRINUSEを聞く::: 8080

netstat -nptl

tcp6 0 0 ::: 9000 ::: * LISTEN 9660/Java
tcp6 0 0 ::: 5800 ::: *聞く-
tcp6 0 0 ::: 5900 ::: *聞く-
tcp6 0 0 ::: 8080 ::: * LISTEN 10401/node
tcp6 0 0 ::: 20080 ::: * LISTEN 9660/Java
tcp6 0 0 ::: 80 ::: * LISTEN-
tcp6 0 0 ::: 22 ::: *聞く-
tcp6 0 0 ::: 10137 ::: * LISTEN 9660/Java

キル-9 10401

1
navnit kapadiya

ubuntuのターミナルでpkill -9ノードとしてノードを強制終了し、ノードを起動します

0
Aditya Prakash

そのプロセスのポート番号/ PIDをリストするために、コマンドnetstat -ano | grep "portnumber"を使用しました。次に、taskkill -f //pid 111111を使用してプロセスを強制終了できます。最後の値は、最初のコマンドで見つかったpidです。

私が時々遭遇する問題の1つは、プロセスを強制終了した後でもノードが再スポーンすることです。そのため、ノードプロセスを手動で強制終了するには、古き良きタスクマネージャを使用する必要があります。

0
davida227

ps -ef | grep node app.jsを検索し、app.jsのPIDを強制終了します

0
megan5

ノードサーバーを強制終了するには、まずターミナルで次のコマンドを実行します。

  1. top
  2. 別のウィンドウを開いて、前のウィンドウからサーバーidをコピーします:PID number -9 killこれで、ノードサーバーを強制終了して、アプリの実行を再試行します。
0
Mohammed Dwina

私の場合、マシンを再起動すると問題は解決しました。

0
Balram Singh

上記のすべてを試してみたが、それでもルージュプロセスが見つからない場合は、もう一度試してください。ただし、コマンドの前に「Sudo」を含めてください。

0
MMMTroy

MacとRaspberry Piにノードレッドがインストールされています。まったく同じ問題があり、「killall」を実行しても解決しませんでした。 Raspberry Piをシャットダウンしてコンピューターを再起動すると、正常に機能しました。

0
alkopop79

Npm startコマンドを2つの異なるタブで実行しようとした可能性があります。npmstartが既にtab.check itで実行されている場合は実行できません。

0
Bhudke Aakshayy

端末で次のコマンドを使用して、ポートを強制終了する必要があります。

$ Sudo killall -9 nodejs
0
Shivam Kohli

UIがもっと好きなら、WindowsタスクマネージャーでNode.jsプロセスを見つけて、それを強制終了してください。

0
PolinaC