私は数週間、node.jsプロジェクトで作業してきましたが、うまく機能しています。通常、「npm start」を使用してアプリを実行し、localhost、ポート3000のブラウザーで表示します。
今日、npm startの使用中に次のエラーが発生し始めました。
Server started on port 3000
Port 3000 is already in use
リソースモニターを確認しましたが、ポート3000で実行中の他のプロセスはありません。このエラーメッセージが表示されるのはなぜですか?
私のapp.jsには、ポートを設定する次のコードがあります...これは間違っていますか?以前はうまく機能していたので、何が間違っているのかわかりません。
// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
console.log('Server started on port '+app.get('port'));
});
助けてくれてありがとう!
編集:どのプロセスがポートを使用しているかを確認するためにnetstatとTCPViewを実行しようとしましたが、そのポートを使用しているものはありません。ラップトップも再起動しようとしましたが、同じエラーが表示されます。
そのプロセスを強制終了する方法を検索できます。
Linux/Mac OSの場合は、端末で(Sudo) run
を検索します。
$ lsof -i tcp:3000
$ kill -9 PID
Windowsの場合:
netstat -ano | findstr :3000
tskill typeyourPIDhere
git bashのtskill
のtaskkill
を変更する
@sovaが提案したように時々それが起こりますこれは私に時々起こります、EADDRが使用中です。通常、アプリを実行しているバックグラウンドに隠れているターミナルウィンドウがあります。そして、それは私にも当てはまります。
ターミナルを長時間開いたとき、そうです、そうです、プロセスを停止しました。しかし、時々それはバックグラウンドで止まらなかった。 だから、最善の解決策は、ターミナルを閉じて、もう一度起動することです。それはあなたの問題を解決します。私の場合はうまくいくからです。
また、
Sudo lsof -i:<PORT_NO>
現在はインスタンスを閉じますが、バックグラウンドでプロセスを停止できません。だから一度、
Sudo kill <PID>
動作しますが、コードを更新して保存すると、Nodemonと同様にこの問題が再び発生します。
したがって、端末を終了すると問題が解決します。OR
killall -9 node
Windowsの場合、タスクマネージャは実行中のノードプロセスを確実に表示します。プロセスを強制終了すると、問題が解決します。
Уменятакаяжепроблема。 (СледующиешагихорошоработаютвWindows 10):
npm start
を使用してください。
Надеюсь、этопоможетвам。
EADDRが使用中の場合、これは時々起こります。通常、アプリを実行しているバックグラウンドで隠れているターミナルウィンドウがあります。端末ウィンドウでctrl + Cを使用してプロセスを停止できます。
または、おそらくコピー/パスタのためにポートを複数回リッスンしています=)
GoogleからHigh Sierraのソリューションを入手しました。
Macosおよび一部のアプリ(pingを含む)のネットワーク設定で変更されたものは、localhostを解決できません。
/ etc/hostsの編集は修正のようです:
cmd:Sudo nano /etc/hosts/
content 127.0.0.1 localhost
または、単純に(/ etc/hostsが空であることが確実な場合)Sudo echo '127.0.0.1 localhost' > /etc/hosts
同じことを見て、成功せずに上記のすべての提案を試しました。これを解決する手順は次のとおりです。-wifiをオフにします-npm start(これは動作するはずです)-wifiをオンにします
私は根本的な問題が何であるか正確にはわかりませんが、それは私のためにそれを解決しました。
タスクマネージャーを開きます(Ctrl + Alt + Delを押します 'プロセスタブ'を選択します 'Node.js:サーバー側JavaScript'を検索します選択して 'タスクの終了'ボタンをクリックします
バックグラウンドで実行されている管理プロセスである可能性があり、netstat
には表示されません。tasklist | grep node
を使用して、この管理プロセスのPIDを見つけてから、kill PID
を使用します
EADDRINUSE
がアプリを追加できない理由を見つけるのに2時間費やしました(他のNode-Expressサーバーは大丈夫でした)... lazyConnect: true,
をデータソース構成に追加した後、機能し始めました。
なぜ助けたのか聞かないでください。私は知らない。同じ問題を抱えている人のためだけに、この情報をここに掲載しています。
Package.jsonスクリプトinlcudeで:
"start": "nodemon app.js --delay 1500ms"
問題は私にとって、古いポートが再起動のためにnodemonによって時間内にシャットダウンされなかったときだったと信じています。 multerを使用して問題が発生しました。
WindowsでGit Bashを使用してこの問題が発生しました。 npm start
またはnode app.js
を実行します。 Ctrl + Cですぐに終了し、npm start
またはnode app.js
を使用してサーバーを再起動しようとすると、このエラーメッセージが表示されます。
通常のWindowsコマンドプロンプトでこれを行うと、問題なく動作します。
または別の方法で行うことができます。 タスクマネージャーを開き、「Node.js:Server-side JavaScript」行を見つけます。 それを選択してタスクを終了。これで動作するはずです。
ありがとう。
Windowsユーザーの場合、 CurrPorts ツールを使用して、使用中のポートを簡単に削除できます。
ブラウザでローカルホストを開いてみてください。アドレスバーにlocalhost:3000
と入力するだけです。
アプリを開くと、以前のnpm run
がまだアクティブであることを意味します。これで、同じアプリを設計している場合、または以前に実行したアプリのindex.jsでコードを微調整して(おそらくブラウザのタブを更新してクラッシュさせてください;).....新しいアプリディレクトリから再度npm run start
を実行してください。お役に立てれば! :)
または
タスクマネージャー(WINDOWS_KEY + X>タスクマネージャー)を開くと、「Node.js:Server-side JavaScript」行が表示されます。それを選択してタスクを終了します。
そうでない場合は、アプリの.env
ファイルを変更してport:3002
を含め、新しいアプリを実行します。これにより、異なるポートで2つの個別のアプリを実行できます。乾杯!!
webstormを使用している場合は、デフォルトのポートがファイルから3000でないことを確認してください->設定->ビルド、実行、展開->デバッガー
ビルトインサーバーポート
「63342」に設定するか、この回答を参照してください Change WebStorm LiveEdit Port(63342)
Macユーザー向けのこの簡単なソリューションを見つけました。
killall node