[英]node js listen EADDRINUSE error for simple httpserver
我有簡單的節點js http服務器。
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
如果我跑
node basicserver.js
我明白了
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: listen EADDRINUSE
at errnoException (net.js:642:11)
at Array.0 (net.js:743:26)
at EventEmitter._tickCallback (node.js:192:40)
我看過這篇文章,但該帖子似乎是特定於TCP服務器而不是http服務器。 有誰可以幫忙。
您正在偵聽的端口已被另一個進程監聽。 在這種情況下,我感覺這是你的自我。 你可以做一個ps aux | grep node
ps aux | grep node
然后使用kill <pid>
殺死你的節點進程。 除此之外,您還可以嘗試其他端口。
--Update--
如果你想找到哪個進程正在偵聽,你可以使用netstat -lpn
( -l
是查找偵聽端口, -p
是包含進程名稱和pid, -n
是不解析主機名,或者它會很慢),找到正在偵聽不同端口的進程。 如果有太多,你可以做netstat -lnp | grep :8888
netstat -lnp | grep :8888
。
也可以使用, fuser 8888/tcp
,它會顯示進程pid,並且還會添加-k
將以最快的方式-k
進程。
我意識到這兩個命令只適用於linux 。
殺死我機器上的所有實驗......
killall node
您正在偵聽的端口已被另一個進程監聽。
當我遇到這個錯誤時,我使用Windows PowerShell殺死了該進程(因為我使用的是Windows)
ps
然后你就可以得到進程列表 node
的進程,並記下Id
Stop-process <Id>
我認為這對Windows用戶有幫助。
嘗試運行服務器時可能會出現同樣的問題,但您沒有root權限。
我也使用EADDRINUSE 127.0.0.1遇到了這個問題。 檢查節點進程后,我將服務器IP更改為“localhost”。 這樣做之后就開始了。 希望這可以幫助。
在我的Linux Mint
只為PID
工作殺了我:
netstat -nltp | grep 8080
netstat -nltp | grep 8080
- 顯示使用8080
端口的PID
,我的輸出:
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 27599/node
- PID
節點dev的服務器的是27599
在我的情況
然后殺死:
kill -9 <PID>
kill -9 27599
前言:
不知道是什么錯誤,但我啟動我的WebPack開發服務器,如npm run dev
:
webpack-dev-server --hot --host int.loc --port 8080
當中斷他 - 在終端通過Ctrl+C
並再次啟動它 - 他導致相同的錯誤Error: listen EADDRINUSE 127.0.0.1:8080
,但在它工作完美之前的所有時間。
killall node
沒有幫助。
對於Windows用戶:在Powershell中,您可以使用:
Stop-Process -Name "ProcessName" -Force
在這種情況下, "ProcessName"
將是"node"
。
更多信息: 如何殺死Windows中的進程
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.