node.js - produccion - cómo liberar localhost de Error: escucha EADDRINUSE
node.js servidor web (19)
Estoy probando un servidor escrito en nodejs en Windows 7 y cuando trato de ejecutar el probador en la línea de comando obtengo 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?
Correr:
ps -ax | grep node
Obtendrás algo como:
60778 ?? 0:00.62 /usr/local/bin/node abc.js
Entonces hazlo:
kill -9 60778
Creé 2 servidores, escuchando en el mismo puerto 8081, ejecutando desde el mismo código, mientras aprendía
La creación del primer servidor ha funcionado. La creación del segundo servidor ha fallado con EADDRINUSE.
Los retrasos de devolución de llamada de node.js pueden ser motivos que no funcionó, o que 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?
Cuando aparece un error Error: escucha EADDRINUSE,
Intenta ejecutar los siguientes comandos de shell:
netstat -a -o | grep 8080
taskkill /F /PID 6204
He grep
para 8080, porque sé que mi servidor se está ejecutando en el puerto 8080. ( static
me dice cuando lo inicio: ''serving''. "En http://127.0.0.1:8080 ''). Puede que tenga que buscar un puerto diferente.
Cuando recibes un error
Error: escucha EADDRINUSE
Abra el símbolo del sistema y escriba las siguientes instrucciones:
netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>
después de eso, reinicie la interfaz de brecha telefónica.
Si desea saber qué proceso está usando la función phone fap, abra TASK MANAGER y observe el PID del encabezado de columna y encuentre el no. PID.
El siguiente comando le dará una lista de los procesos de nodo en ejecución.
ps | grep node
Para liberar ese puerto, detenga el proceso usando lo siguiente.
kill <processId>
En Linux (derivados de Ubuntu al menos)
killall node
es más fácil que esta forma.
ps | grep <something>
kill <somepid>
Ninguno funcionará si tiene un niño huérfano sosteniendo el puerto. En cambio, haz esto:
netstat -punta | grep <port>
Si el puerto está siendo retenido verás algo como esto:
tcp 0 0.0.0.0:<port> 0.0.0.* LISTEN <pid>/<parent>
Ahora mata por pid:
kill -9 <pid>
En la ventana, ejecuta este comando:
taskkill /F /PID 1952
Error: escuche EADDRINUSE para resolverlo en Ubuntu ejecute en la terminal netstat -nptl
y después de esto kill -9 {process-number}
este comando es para matar el proceso del nodo y ahora puede intentar ejecutar nuevamente el comando node server.js
Ex
escucha EADDRINUSE ::: 8080
netstat -nptl
tcp6 0 0 ::: 9000 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 5800 ::: * ESCUCHAR -
tcp6 0 0 ::: 5900 ::: * ESCUCHAR -
tcp6 0 0 ::: 8080 ::: * ESCUCHAR 10401 / nodo
tcp6 0 0 ::: 20080 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 80 ::: * ESCUCHAR -
tcp6 0 0 ::: 22 ::: * ESCUCHAR -
tcp6 0 0 ::: 10137 ::: * LISTEN 9660 / java
matar -9 10401
Es posible que hayas intentado ejecutar el comando npm start en dos pestañas diferentes. No puedes ejecutar npm start cuando ya se está ejecutando en alguna pestaña. Comprueba una vez.
Está recibiendo 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.
Como está en Windows , puede finalizar el proceso utilizando el símbolo del sistema ( cmd
). Con el cmd
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 ...
Encuentre todos los procesos que se ejecutan en un puerto específico (en este ejemplo, Puerto es "3000"):
netstat -ano | encontrar ": 3000"
El comando
netstat
mostrará una lista de todos los procesos que se ejecutan en el puerto especificado. En la última columna de los resultados denetstat
, puede ver losPID
(en este ejemplo, PID es "8308"). Puede obtener más información sobre unPID
específico ejecutando el siguiente comando:lista de tareas / fi "pid eq 8308"
Si desea finalizar un proceso, puede hacerlo con el siguiente comando utilizando su
PID
(en este ejemplo, PID es "8308"):taskkill / pid 8308 / f
Captura de pantalla
Para cualquiera que haya probado todo lo anterior, pero aún no puede encontrar el proceso de rouge, pruébelos nuevamente, pero asegúrese de incluir "sudo" delante de los comandos.
Si le gusta más la interfaz de usuario, busque el proceso Node.js en el administrador de tareas de Windows y elimínelo.
Significa que la dirección a la que intenta vincular el servidor está en uso. Pruebe con otro puerto o cierre el programa utilizando ese puerto.
Tengo el nodo rojo instalado en mi Mac y mi Raspberry Pi. Tenía exactamente el mismo problema y hacer ''killall'' no ayudó. Una vez que apagué la Raspberry Pi y reinicié mi computadora, funcionó bien.
Una posible solución que funcionó para mí fue simplemente cerrar la ventana en el navegador donde tenía el script " http://localhost:3000/ " en ejecución.
ps -ef | grep node find app.js, kill pid de app.js
puedes cambiar tu puerto en app.js o en tu archivo de configuración del proyecto.
predeterminado (''puerto'', 80)
y para ver si el puerto 80 ya está en uso, puedes 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.
nodo ps -ef | grep
y si encuentra que ya se está ejecutando, puede matarlo usando
nodo killall
supongamos que su servidor se está ejecutando en el port 3000
lsof -i tcp:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 11716 arun 11u IPv6 159175 0t0 TCP *:3000 (LISTEN)
después de eso use kill -9 <pid>
en el caso anterior, sudo kill -9 11716
use el comando below para matar un proceso que se ejecuta en un puerto determinado - 3000 en este ejemplo a continuación
kill -9 $(lsof -t -i:3000)