回答:
これは、サーバーをバインドしようとしているアドレスが使用中であることを意味します。別のポートを試すか、そのポートを使用しているプログラムを閉じます。
node app.js
してCtrl + Cで停止すると機能していましたが、初めて使用した後にEADDRINUSEの問題が発生し始めたnpm start
ため、Ctrl + C以外のものを使用してシャットダウンしたのが本当の解決策のようnpm start
です。
npm start
スクリプトは、複数のノードプログラム、またはバックグラウンドで実行した場合、またはプログラムがそのポートを使用して子プロセスを持っている可能性があるノードプログラムであるかもしれません。
ps aux | grep node
、プロセスID(2番目の列)を見つけて、それを強制終了しましたkill <pid>
(私はでしたkill 18762
)。
実行:
ps -ax | grep node
次のようなものが得られます:
60778 ?? 0:00.62 /usr/local/bin/node abc.js
次に行います:
kill -9 60778
kill -15 60778
それが正常に終了するには、プロセスが可能になると(多くの方が良いだろうSIGTERM
送る場合は代わりに)SIGKILL
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>
<pid>/<parent>
私が取得-
次のコマンドは、実行中のノードプロセスのリストを提供します。
ps | grep node
そのポートを解放するには、以下を使用してプロセスを停止します。
kill <processId>
| grep -v grep
を除外するためにを追加することができgrep
ます。
pidof node
pidof
自作でosxに簡単にインストールされました brew install pidof
EADDRINUSE
アプリケーションが使用するポートが別のプロセスによって占有されているため、エラーが発生しています。このポートを解放するには、占有プロセスを終了する必要があります。
あなたが上にあるので、Windowsの、コマンドプロンプトを使用してプロセスを終了することができます(cmd
)。を使用するcmd
と、ブロッキングアプリケーションのプロセスID(PID)を検出できます。プロセスを終了/強制終了するには、PIDが必要です。
ここにステップバイステップガイドがあります...
指定されたポート(この例では、ポートは「3000」)で実行されているすべてのプロセスを検索します。
netstat -ano | 「:3000」を検索
の netstat
コマンドは、指定されたポートで実行されているすべてのプロセスを一覧表示します。netstat
結果の最後の列にPID
s が表示されます(この例では、PIDは "8308"です)。PID
次のコマンドを実行すると、特定の項目の詳細を確認できます。
tasklist / fi "pid eq 8308"
プロセスを終了したい場合は、次のコマンドを使用して終了できますPID
(この例では、PIDは "8308"です)。
taskkill / pid 8308 / f
スクリーンショット
エラーエラーが発生した場合:EADDRINUSEをリッスンします。
次のシェルコマンドを実行してみてください。
netstat -a -o | grep 8080
taskkill /F /PID 6204
私grep
は私のサーバーがポート8080で実行されていることを知っているので、8080 static
を食べました。港。
以下のコマンドを使用して、特定のポートで実行されているプロセスを強制終了します-以下のこの例では3000
kill -9 $(lsof -t -i:3000)
私にとって有効な解決策の1つは、対応する「http:// localhost:3000 /」スクリプトを実行しているブラウザでウィンドウを閉じるだけでした。
エラーが発生したとき
エラー:EADDRINUSEをリッスンします
コマンドプロンプトを開き、次の指示を入力します。
netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>
その後、電話ギャップインターフェイスを再起動します。
phonegapが使用しているプロセスIDを知りたい場合は、TASK MANAGERを開いて、列見出しPIDを確認し、PID番号を見つけます。
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
ポートはapp.jsまたはurプロジェクト構成ファイルで変更できます。
デフォルト( 'ポート'、80)
そして、ポート80がすでに使用されているかどうかを確認するには、次のことができます
netstat -antp | grep 80
netstat -antp | grepノード
ノードプロセスがすでに実行されているかどうかを確認したい場合があります。
ps -ef | grepノード
すでに実行中の場合は、次のコマンドを使用して強制終了できます
killallノード
学習しながら2つのサーバーを作成し、同じポート8081でリッスンし、同じコードから実行しました
1番目のサーバーの作成が機能しました2番目のサーバーの作成がEADDRINUSEで失敗しました
node.jsコールバックの遅延が、どちらも機能しないか、2番目のサーバーの作成に例外があり、プログラムが終了したため、1番目のサーバーも閉じている可能性があります
2サーバーの問題のヒント、私は次の理由で取得しました: エラーの修正方法:nodejsの使用中にEADDRINUSEをリッスンしますか?
エラー:EADDRINUSEをリッスンしてUbuntuで解決し、ターミナルnetstat -nptl
で実行します。kill -9 {process-number}
このコマンドの後にノードプロセスを強制終了するため、node server.jsコマンドをもう一度実行してみます。
例
EADDRINUSE ::: 8080を聞く
netstat -nptl
tcp6 0 0 ::: 9000 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 5800 ::: * LISTEN-
tcp6 0 0 ::: 5900 ::: * LISTEN-
tcp6 0 0 ::: 8080 :: :* LISTEN 10401 /ノード
tcp6 0 0 ::: 20080 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 80 ::: * LISTEN-
tcp6 0 0 ::: 22 ::: * LISTEN-
tcp6 0 0 ::: 10137 ::: * LISTEN 9660 / java
殺す-9 10401
netstat
、さまざまなパラメーターを受け取ります。netstat -a -p tcp -b -v
プロセス名を出力します。
npm startコマンドを2つの異なるタブで実行しようとした可能性があります。npmstartをすでにいくつかのタブで実行している場合は実行できません。一度確認してください。
開始ノードよりもubantuのターミナルでpkill -9ノードとしてノードを強制終了します
ノードサーバーを強制終了するには、まずターミナルで次のコマンドを実行します。
top
id
、前のウィンドウからサーバーをコピーします。PID number -9 kill
これで、ノードサーバーを強制終了して、アプリを実行してみてください。
sudo killall node
便利かもしれません