2016-09-04 50 views
5

我一直在使用一個node.js項目幾個星期,它一直在努力工作。通常我使用「故宮啓動」運行我的應用程序,並查看它在本地主機上的瀏覽器,端口3000Node.js端口3000已經在使用,但它實際上不是?

今天,我開始了下面的錯誤,而使用NPM啓動:

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來檢查哪個進程正在使用該端口,但沒有使用該端口。我也嘗試重新啓動我的筆記本電腦,但我仍然得到相同的錯誤。

+0

還有另一個使用此端口的進程,這是肯定的。你想嘗試哪種操作?您可以像谷歌它'找到哪個prosess使用端口'爲您的操作系統 – tanaydin

+0

你試過瀏覽到http:// localhost:3000 /? – Blorgbeard

+0

@tanaydin我已經檢查了Windows 10上的資源監視器,並且沒有進程在端口3000上偵聽。除非它是我看不到的那個? – user2573690

回答

4

有時候會發生這種情況,EADDR正在使用中。通常情況下,終端窗口隱藏在仍在運行應用的後臺中。你可以在終端窗口中用ctrl + C停止進程。

或者,也許你是由於複製多次/麪食偵聽的端口=)

+0

感謝您的幫助!我沒有任何其他終端窗口打開,我應該檢查什麼? – user2573690

+0

找到任何節點或npm進程並結束它。如果你還有困難,重啓機器,或者只是選擇一個不同的端口來處理。真的沒有理由_must_是端口3000或8080 – sova

+0

我剛剛創建了一個新的節點應用程序,並在端口3000上啓動它,似乎工作正常,但是當我嘗試運行我現有的項目時,它說端口正在使用中。你有過這個問題嗎? – user2573690

15

您可以在如何殺死該進程搜索。

對於Linux/Mac的OS搜索(須藤)在終端運行以下命令:

$ lsof -i tcp:3000 
$ kill -9 PID 

您可以搜索同一殺死這是獲取您的PC上3000端口的過程。

+1

謝謝你:)完美的工作。 –

14

對於windows, 任務管理器肯定會顯示正在運行的節點進程。試圖殺死這個過程,它會解決問題。

0

有時會發生,因爲@sova建議這種情況有時會發生在我身上,EADDR正在使用中。通常情況下,終端窗口隱藏在仍在運行應用的後臺中。這也適合我。

碰巧,當你長時間打開終端,是的,你有權利,你已經停止了這個過程。但有時它並沒有停在後臺。 所以最好的解決方案是關閉終端並重新啓動它。它會解決你的問題。因爲在我的情況下,它的工作原理。

此外,

sudo lsof -i:<PORT_NO> 

關閉實例當前時間,但無法停止進程在後臺。因此,對於一個時間,

sudo kill <PID> 

作品,但時再我們更新代碼並保存,再次出現此問題與Nodemon

因此退出終端將解決問題。

killall -9 node 
相關問題