Estoy probando un servidor escrito en nodejs en Windows 7 y cuando intento ejecutar el probador en la línea de comandos, aparece el siguiente error
Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)
¿Cómo puedo solucionarlo sin reiniciar?
sudo killall node
puede ser útilRespuestas:
Significa que la dirección a la que está intentando enlazar el servidor está en uso. Pruebe con otro puerto o cierre el programa usando ese puerto.
fuente
node app.js
y lo detuve con Ctrl + C, pero comencé a tener el problema EADDRINUSE después de la primera vez que lo usénpm start
, por lo que parece que la solución real sería usar algo que no sea Ctrl + C para apagarlo después de usarlonpm start
.npm start
secuencia de comandos puede ser más de un programa de nodo, o un programa de nodo que se ejecuta en segundo plano, o el programa puede tener procesos secundarios que utilizan ese puerto.ps aux | grep node
, encontré el ID del proceso (segunda columna) y simplemente lo maté conkill <pid>
(el mío erakill 18762
).Correr:
Obtendrás algo como:
Entonces hazlo:
fuente
kill -15 60778
sería mucho mejor, ya que permitiría que el proceso salga con gracia (SIGTERM
) en su lugar si envía unSIGKILL
En Linux (derivados de Ubuntu al menos)
es más fácil que esta forma.
Ninguno de los dos funcionará si tiene un niño huérfano sosteniendo el puerto. En su lugar, haz esto:
Si el puerto está retenido, verá algo como esto:
Ahora mata por pid:
fuente
<pid>/<parent>
, obtengo-
El siguiente comando le dará una lista de los procesos de nodo en ejecución.
Para liberar ese puerto, detenga el proceso usando lo siguiente.
fuente
| grep -v grep
para excluir elgrep
proceso.pidof node
pidof
se instaló fácilmente para mí en osx con homebrewbrew install pidof
Recibe el error
EADDRINUSE
porque el puerto, que su aplicación desea usar, está ocupado por otro proceso. Para liberar este puerto, debe finalizar el proceso de ocupación.Ya que está en Windows , puede finalizar el proceso usando el símbolo del sistema (
cmd
). Con elcmd
puede descubrir el ID de proceso (PID) de la aplicación de bloqueo. Necesitará el PID para terminar / matar el proceso.Aquí hay una guía paso a paso ...
Busque todos los procesos que se ejecutan en un puerto específico (en este ejemplo, el puerto es "3000"):
El
netstat
comando enumerará todos los procesos que se ejecutan en el puerto especificado. En la última columna de losnetstat
resultados puede ver laPID
s (en este ejemplo, PID es "8308"). Puede obtener más información sobre un específicoPID
ejecutando el siguiente comando:Si desea terminar un proceso, puede hacerlo con el siguiente comando usando su
PID
(en este ejemplo, PID es "8308"):Captura de pantalla
fuente
Cuando recibe un error Error: escuche EADDRINUSE,
Intente ejecutar los siguientes comandos de shell:
Me
grep
ED para 8080, porque sé que mi servidor está ejecutando en el puerto 8080. (static
me dice cuando lo comienzo: 'servir a '' http://127.0.0.1:8080 '.) Es posible que tenga que buscar un diferente Puerto.fuente
suponga que su servidor se está ejecutando en
port 3000
después de ese uso
kill -9 <pid>
en el caso anterior
sudo kill -9 11716
fuente
use el siguiente comando para matar un proceso que se ejecuta en un determinado puerto: 3000 en este ejemplo a continuación
fuente
Una posible solución que funcionó para mí fue simplemente cerrar la ventana en el navegador donde tenía el correspondiente script " http: // localhost: 3000 / " ejecutándose.
fuente
Verifique el ID del proceso
sudo lsof -i: 8081
Que matar el proceso particular
sudo kill -9 2925
fuente
Cuando recibes un error
Abra el símbolo del sistema y escriba las siguientes instrucciones:
Después de eso, reinicie la interfaz de la brecha del teléfono.
Si desea saber qué ID de proceso está usando phonegap, abra TASK MANAGER y mire el encabezado de columna PID y busque el número de PID.
fuente
El
killall -9
nodo mencionado anteriormente , sugerido por Patrick, funciona como se esperaba y resuelve el problema, pero es posible que desee leer la parte de edición de esta misma respuesta sobre por quékill -9
puede que no sea la mejor manera de hacerlo.Además de eso, es posible que desee apuntar a un solo proceso en lugar de matar ciegamente todos los procesos activos.
En ese caso, primero obtenga el ID de proceso (PID) del proceso que se ejecuta en ese puerto (digamos 8888):
Esto devolverá algo como:
(ESCUCHA) Entonces hazlo (pd - en realidad no. Sigue leyendo a continuación):
fuente
Esto funciona en Mac:
Paso 1.
El comando anterior le dará los Id. De proceso que actualmente contienen el puerto.
Paso 2.
fuente
puede cambiar su puerto en app.js o en el archivo de configuración de su proyecto.
predeterminado ('puerto', 80)
y para ver si el puerto 80 ya está en uso, puede hacer
netstat -antp | grep 80
netstat -antp | nodo grep
es posible que desee ver si el proceso de nodo ya se está ejecutando o no.
ps -ef | nodo grep
y si encuentra que ya se está ejecutando, puede matarlo usando
nodo de killall
fuente
Creé 2 servidores, escuchando en el mismo puerto 8081, corriendo desde el mismo código, mientras aprendía
La creación del primer servidor ha funcionado, la creación del segundo servidor falló con EADDRINUSE
Los retrasos en la devolución de llamada de node.js pueden ser la razón detrás de que no funcionó, o la creación del segundo servidor tuvo una excepción y el programa salió, por lo que el primer servidor también está cerrado
2 sugerencia de problema del servidor, obtuve de: ¿Cómo solucionar el error: escuchar EADDRINUSE mientras usa nodejs?
fuente
Error: escuche EADDRINUSE para resolverlo en Ubuntu, ejecute en la terminal
netstat -nptl
y luego estekill -9 {process-number}
comando es para matar el proceso del nodo y ahora puede intentar ejecutar nuevamente el comando node server.jsEx
escuchar EADDRINUSE ::: 8080
netstat -nptl
tcp6 0 0 ::: 9000 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 5800 ::: * LISTEN -
tcp6 0 0 ::: 5900 ::: * LISTEN -
tcp6 0 0 ::: 8080 :: : * LISTEN 10401 / node
tcp6 0 0 ::: 20080 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 80 ::: * LISTEN -
tcp6 0 0 ::: 22 ::: * LISTEN -
tcp6 0 0 ::: 10137 ::: * ESCUCHAR 9660 / java
matar -9 10401
fuente
netstat
recibe diferentes parámetros.netstat -a -p tcp -b -v
generaría el nombre del proceso.Tengo el nodo rojo instalado en mi Mac y mi Raspberry Pi. Tuve exactamente el mismo problema y hacer 'killall' no ayudó. Una vez que apagué la Raspberry Pi y reinicié mi computadora, funcionó bien.
fuente
Es posible que haya intentado ejecutar el comando npm start en dos pestañas diferentes. No puede ejecutar npm start cuando ya se está ejecutando en alguna pestaña. Compruébelo una vez.
fuente
Para cualquiera que haya probado todo lo anterior, pero aún no pueda encontrar el proceso de rouge, inténtelos todos de nuevo, pero asegúrese de incluir "sudo" delante de los comandos.
fuente
Si le gusta más la interfaz de usuario, busque el proceso Node.js en el administrador de tareas de Windows y elimínelo.
fuente
ps -ef | nodo grep encuentra app.js, elimina el pid de app.js
fuente
simplemente mata el nodo como nodo pkill -9 en la terminal de ubantu que inicia el nodo
fuente
Deberá eliminar el puerto intentando usar el siguiente comando en la terminal
fuente
[RESUELTO]
Puede que sea demasiado tarde, pero está funcionando a la perfección.
Necesitas
pm2
estar instaladoPara detener el servidor en ejecución actual (server.js):
fuente
Resolví este problema agregando a continuación en mi package.json para matar PORT activo - 4000 (en mi caso) Ejecutando en WSL2 / Linux / Mac
Fuente
fuente
Para matar el servidor de nodos, primero ejecute este comando en su terminal:
top
id
de la ventana anterior:PID number -9 kill
así que ahora mató su servidor de nodo, intente nuevamente ejecutar su aplicación.fuente
Usé el comando
netstat -ano | grep "portnumber"
para enumerar el número de puerto / PID para ese proceso. Luego, puede usartaskkill -f //pid 111111
para matar el proceso, siendo el último valor el pid que encuentre en el primer comando.Un problema con el que me encuentro a veces es la reaparición del nodo incluso después de finalizar el proceso, por lo que tengo que usar el antiguo administrador de tareas para eliminar manualmente el proceso del nodo.
fuente
En la ventana, ejecute este comando:
fuente