Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

node js listen EADDRINUSE error for simple httpserver

I have simple node js http server.

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(8888);

If I run

node basicserver.js 

I get

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)

I have seen this post, but that post seems to be specific to TCP server and not http server. Could anyone please help.

like image 437
hrishikeshp19 Avatar asked Feb 09 '12 02:02

hrishikeshp19


2 Answers

The port you are listening to is already being listened by another process. In this case I got a feeling that it is your self. You can do a ps aux | grep node and then using kill <pid> kill your node process. Beside that you can also try another port.

--Update--

In case if you want to find which process is listening, you can use netstat -lpn ( -l is to find out the listening ports, -p is to include the process name and pid, -n is to not to resolve host names, or else it will be slow), to find the processes that are listening on different ports. If there was too many, you can do netstat -lnp | grep :8888.

Also can use, fuser 8888/tcp, which will show you the process pid and also adding -k will kill the process, fastest way ever.

I realized this two commands only work in linux.

like image 154
Farid Nouri Neshat Avatar answered Oct 05 '22 23:10

Farid Nouri Neshat


On my Linux Mint only kill by PID work for me:

netstat -nltp | grep 8080 - shows PID of using 8080 port, my output:

tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 27599/node - PID of node dev server is 27599 in my case

and then kill:

kill -9 <PID>

kill -9 27599

Preamble:

Don't know what a bug, but I am start my WebPack dev server like npm run dev:

webpack-dev-server --hot --host int.loc --port 8080

And when interrupt him - in terminal by Ctrl+C and start it again - he causing same error Error: listen EADDRINUSE 127.0.0.1:8080, but all time before it work perfect.

killall node not helped.

like image 43
FreeStyler Avatar answered Oct 06 '22 00:10

FreeStyler