2012-02-09 10 views
8

Ho un semplice server http js nodo.nodo js ascolta EADDRINUSE errore per semplice httpserver

var http = require("http"); 

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

Se corro

node basicserver.js 

ottengo

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) 

ho visto this post, ma quel post sembra essere specifico per server TCP e non server HTTP. Qualcuno potrebbe aiutare per favore.

risposta

22

La porta che si sta ascoltando è già in ascolto da un altro processo. In questo caso ho la sensazione che sia te stesso. È possibile eseguire un ps aux | grep node e quindi utilizzare kill <pid> terminare la procedura del nodo. Oltre a questo puoi anche provare un'altra porta.

--Update--

Nel caso in cui, se si vuole trovare quale processo è in ascolto, è possibile utilizzare netstat -lpn (-l è quello di trovare le porte in ascolto, -p è quello di includere il nome del processo e PID, -n è quello di non risolvere i nomi degli host, altrimenti sarà lento), per trovare i processi che sono in ascolto su porte diverse. Se ce n'erano troppi, puoi fare netstat -lnp | grep :8888.

Inoltre può utilizzare, fuser 8888/tcp, che mostrerà il processo pid e anche l'aggiunta di -k ucciderà il processo, il modo più veloce di sempre.

Ho realizzato che questi due comandi funzionano solo in linux.

+0

Sono così stupido. Grazie. – riship89

+0

In realtà sono onesto e ho avuto lo stesso identico problema con alcuni processi di bambini zombi. –

+0

FYI, il 'nestat -lnp | grep: 8888' esempio ha un refuso in 'netstat' – klamping

2

Lo stesso problema può verificarsi quando si tenta di eseguire il server, ma non si dispone dei privilegi di root.

6

Il mio preferito per uccidere tutti gli esperimenti sulla mia macchina ...

killall node 
0

Ho anche imbattuto in questo problema con EADDRINUSE 127.0.0.1. Dopo aver controllato i processi del nodo ho cambiato l'IP del server in "localhost". Dopo averlo fatto, è iniziato subito. Spero che questo ti aiuti.