He estado trabajando con un proyecto de node.js durante algunas semanas y ha funcionado muy bien. Por lo general, utilizo npm start
para ejecutar mi aplicación y verla en un navegador en localhost, puerto 3000.
Hoy, comencé a recibir el siguiente error al usar npm start:
Server started on port 3000
Port 3000 is already in use
He comprobado el monitor de recursos y no tengo ningún otro proceso ejecutándose en el puerto 3000. ¿Por qué recibiré este mensaje de error?
En mi app.js tengo el siguiente código para configurar el puerto ... ¿es incorrecto? Funcionó bien antes, así que no estoy seguro de qué estoy haciendo mal.
// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
console.log('Server started on port '+app.get('port'));
});
¡Gracias por la ayuda!
EDITAR:
Intenté ejecutar netstat y TCPView para verificar qué proceso está usando el puerto, pero no hay nada usando ese puerto. También intenté reiniciar mi computadora portátil, pero sigo recibiendo el mismo error.
fuente
netstat
en un símbolo del sistema o conectarse a localhost: 3000 con un equivalente de telnet, PuTTY, por ejemplo.app.listen()
declaraciones en su aplicación en otra.listen()
que también está intentando iniciar un servidor en ese puerto. El primero funciona, el segundo informa del error. Busque su código.listen
.Respuestas:
Puede buscar cómo eliminar ese proceso.
Para Linux / Mac OS, busque
(sudo) run
esto en la terminal:En Windows:
cambio
tskill
parataskkill
en git bashfuente
lsof
pero consudo lsof
algo, y matar ese proceso resolvió este problema.A veces sucede, como propuso @sova. A mí me pasa a veces, EADDR en uso. Por lo general, hay una ventana de terminal oculta en segundo plano que aún ejecuta la aplicación. Y eso también está bien para mí.
Sucede, cuando ha abierto la terminal durante mucho tiempo, sí, tiene derecho, tiene que detener el proceso. Pero a veces no se detuvo en segundo plano. Así que la mejor solución es cerrar la terminal y volver a iniciarla. Resolverá tu problema. porque en mi caso funciona.
También,
cierra la instancia por tiempo presente pero no puede detener el proceso en segundo plano. Así que por una vez
funciona, pero nuevamente cuando actualizamos nuestro código y guardamos, este problema ocurre nuevamente como con Nodemon .
Así que salir de la terminal solucionará el problema. O
fuente
killall -9 node
que pude ejecutar el servidor localmente.Quizás puedas tomar esto como referencia. Esta única línea de comando puede matar el proceso que se ejecuta en un puerto determinado.
Para matar varios puertos.
fuente
Para Windows, el Administrador de tareas definitivamente mostraría un proceso de nodo en ejecución. Intente matar el proceso, resolverá el problema.
fuente
Yo tuve el mismo problema. (Los pasos siguientes funcionan bien en Windows 10):
Ahora puedes correr
npm start
.Espero que te ayude.
fuente
He visto lo mismo y he probado todas las sugerencias anteriores sin éxito. Estos son los pasos que lo resuelven por mí: - apague el wifi - npm start (esto debería funcionar) - encienda el wifi
No estoy exactamente seguro de cuál es el problema raíz, pero eso lo resolvió para mí.
fuente
netstat -ano
no enumeró nada usando el puerto 3000.Matar a un proceso que posee el puerto 3000
Primero, echemos un vistazo a cómo podemos matar un proceso que tiene un puerto abierto.
Usando el comando lsof, podemos recuperar el PID que tiene el puerto dado:
Entonces podemos matar este proceso simplemente haciendo:
Convirtamos esto en una sola línea:
Si está utilizando una variable de entorno para configurar el puerto del servidor, podemos especificar eso en lugar de codificar nuestros valores:
Por último, podemos usar el puerto 3000 por defecto si la variable de entorno no está configurada:
Conseguir que nodemon ejecute hooks
Nodemon le permite configurar enlaces de eventos a través del archivo de configuración nodemon.json:
Esto hará que nodemon ejecute el comando sh -c 'lsof -i:
${PORT:-3000} -t | xargs
kill cada vez que su aplicación se bloquee, matando así el proceso hijo que generó y que mantiene el puerto abierto.o puedes probar este
p.ej:
fuente
lsof -i :3000 -t
= \fuser -k port-number/tcp
Estaba usando el servidor express con nodemon en NodeJS. Recibí el siguiente mensaje y parece un error:
Existe una solución general que, si finaliza todas las conexiones del servidor de nodo, puede agregar este código en su archivo package.json:
Además, he encontrado varias soluciones de comandos de Windows y bash en Win 10 x64.
Todas mis notas están aquí:
# Terminar todas las conexiones del servidor NodeJS
# Ejemplo: abra el Administrador de tareas de Windows y vea el número PID "node.exe" en Windows
# Mata un proceso en Windows por número de puerto (ejemplo)
Para ayuda:
Codigo 1:
Codigo 2:
Codigo 3:
# Línea de comando para mirar un puerto específico
en cmd:
en bash:
# Encuentra node.exe usando el comando "lista de tareas"
en cmd:
en bash:
fuente
Esto me pasa a veces, EADDR en uso. Por lo general, hay una ventana de terminal oculta en segundo plano que aún ejecuta la aplicación. Puede detener el proceso con ctrl + C en la ventana de terminal.
O tal vez esté escuchando el puerto varias veces debido a copy / pasta =)
fuente
.listen()
varias veces.Abra el Administrador de tareas (presione Ctrl + Alt + Supr. Seleccione la pestaña 'Procesos'. Busque 'Node.js: JavaScript del lado del servidor'. Selecciónelo y haga clic en el botón 'Finalizar tarea'.
fuente
Vino de Google aquí con una solución para High Sierra.
Algo cambió en la configuración de red de macos y algunas aplicaciones (incluido ping) no pueden resolver localhost.
Editar / etc / hosts parece una solución:
cmd:
sudo nano /etc/hosts/
contenido127.0.0.1 localhost
O simplemente (si está seguro de que su / etc / hosts está vacío)
sudo echo '127.0.0.1 localhost' > /etc/hosts
fuente
Pasé 2 horas para averiguar por qué
EADDRINUSE
no me permitía iniciar una aplicación (otros servidores de node-express estaban bien) ... comenzó a funcionar después de agregarlazyConnect: true,
a la configuración de la fuente de datos.No me preguntes por qué ayudó. Yo no sé. Estoy poniendo esta información aquí solo para personas que tienen el mismo problema.
fuente
Tengo este problema al usar Git Bash en Windows. Yo corro
npm start
, onode app.js
. Después de terminarlo con Ctrl + C en breve e intentar iniciar el servidor nuevamente usandonpm start
onode app.js
luego aparece este mensaje de error.Sin embargo, cuando hago esto con el símbolo del sistema de Windows normal , funciona bien.
O puedes hacerlo de otra manera. Abra el Administrador de tareas y busque la fila " Node.js: JavaScript del lado del servidor ". Seleccione eso y finalice la tarea . Debería funcionar ahora.
Gracias.
fuente
Si desea cerrar solo un puerto, simplemente ejecute este comando.
kill -9 $(lsof -t -i:3000)
La diferencia entre
pkill
ykill
es que alguien procese arcilla. En matar aplicas un filtro. simplemente detenga el puerto que desee.El
pkill
comando cierra todos los procesos del nodo.pkill -9 node
Use pkill para evitar pérdidas de memoria que ocurren ocasionalmente durante el desarrollo. si hay más de un nodo, los mata a todos.
También se ejemplifica el uso de scripts en package.json .
fuente
Intente abrir localhost en su navegador. Simplemente escriba:
localhost:3000
en la barra de direcciones.Si la aplicación se abre, significa que la anterior
npm run
todavía está activa. Ahora, puede hacer cambios en el código y ver los efectos si está diseñando la misma aplicación, o si quiere ejecutar otra aplicación, simplemente modifique el código (en index.js de la aplicación que se estaba ejecutando anteriormente) un poco y ( probablemente actualice la pestaña del navegador) para que se bloquee;) ..... Ahora vuelva a ejecutarnpm run start
desde su nuevo directorio de aplicaciones. ¡Espero que esto ayude! :)o
Puede abrir el Administrador de tareas (WINDOWS_KEY + X> Administrador de tareas) y verá la fila "Node.js: JavaScript del lado del servidor". Seleccione eso y finalice la tarea ... ¡¡Debería funcionar ahora !!
De lo contrario, cambie el
.env
archivo de su aplicación para incluirport:3002
y ejecutar la nueva aplicación. Esto le permitirá ejecutar dos aplicaciones separadas en diferentes puertos. ¡¡Salud!!fuente
Espero que ayude
fuente
Simple en linux
fuente
También encontré el mismo problema. La mejor forma de resolverlo es (para Windows) :
Vaya al Administrador de tareas .
Desplácese y busque un proceso de tarea llamado. Node.js: JavaScript del lado del servidor
Termina esta tarea en particular.
¡Ahí tienes! ¡Ahora inicie npm y funcionará como antes!
fuente
Para los usuarios de Windows, puede usar la herramienta CurrPorts para eliminar los puertos en uso fácilmente
fuente
Puede ser un proceso de administración que se ejecuta en segundo plano y
netstat
no muestra esto.Use
tasklist | grep node
para encontrar el PID de este proceso de administración y luegokill PID
fuente
si está utilizando webstorm, asegúrese de que su puerto predeterminado no sea 3000 desde el archivo -> configuración -> compilación, ejecución, implementación -> depurador y cambie
y configúrelo en "63342" o vea esta respuesta Cambiar el puerto de WebStorm LiveEdit (63342)
fuente
En los scripts de package.json se incluyen:
Creo que el problema fue para mí el momento en que el puerto anterior no se cerró a tiempo por nodemon para el reinicio. Experimenté el problema al usar multer.
fuente
Los métodos listen () del servidor o de la aplicación se pueden agregar en 2 lugares. Busque los métodos listen () en los inicios de la aplicación, por eso regresa cuando el servidor comenzó en el puerto XXXX y el puerto XXXX ya está en uso, el mensaje viene uno al lado del otro
fuente
En mi circunstancia, acababa de comenzar a usar VS Code y había seguido un tutorial usando Sequelize. Al final, tenía un archivo bin / www que tenía el listen () allí. No sabía sobre esto y estaba ejecutando mi aplicación ejecutando el nodo app.js, cuando no funcionó, agregué las cosas del servidor expreso con .listen () (que funcionó bien).
Pero cuando comencé a usar nodemon y VSCode, se apuntó a bin / www y eso requirió mi app.js.
Para resumir, agregué .listen () a mi app.js y estaba ejecutando app.js directamente cuando no debería haber agregado eso y ejecutar bin / www.
fuente
En ubuntu, primero tome el proceso usando el número de puerto: sudo lsof -i: 3000 luego use el comando kill para matar el proceso, por ejemplo, si el PID del proceso es 4493 el comando use: kill 4493 , para mac o windows busque el comando relacionado
fuente
He resuelto este problema porque MongoDB o hay otra aplicación que la había ejecutado antes en este puerto, así que para resolverlo, elimine el proceso desde el administrador de tareas, o simplemente cambie el número del puerto de 3000 a cualquier otro.
fuente
Es muy simple. Puede solucionarlo en 2 sencillos pasos.
Resulta que algún otro programa está usando esa variable. Por lo general, cuando inicia react-scripts, buscará una variable de entorno con ese título PORT.
fuente
Antes de ejecutar nodemon, inicie mongod primero. Nunca obtendrá este error. :)
fuente
verifique si hay algún proceso que se esté ejecutando en el mismo puerto ingresando el comando:
Puede encontrar el proceso que se ejecuta en el puerto de nodo respectivo, luego matar el nodo por
Si el problema persiste, simplemente elimine todos los nodos
fuente
Mata todos los puertos en ejecución (mac):
fuente