"El puerto 4200 ya está en uso" cuando se ejecuta el comando ng serve

179

Estoy aprendiendo angular 2 y por primera vez estoy usando el proyecto CLI angular para crear un proyecto sandbox.

Pude ejecutar el comando "ng serve" y funciona muy bien. Quería evitar que se ejecutara, así que ejecuté "Control Z".

Cuando intenté ejecutar el comando "ng-serve" nuevamente, me dio "El puerto 4200 ya está en uso".

Ejecuté "PS" para obtener una lista del PID y eliminé el PID para el angular-cli y volví a ejecutar "ng-serve", pero sigue dando el mismo error de puerto en uso.

Peztherez
fuente
Un desarrollador de Windows de toda la vida. Pasé los últimos meses en una Mac y me entrené para usar CMD + Z. Comencé a encontrarme con este problema en Windows porque estaba predeterminado en CTRL + Z en lugar de CTRL + C
Kildareflare
Si está trabajando en el código de Visual Studio, ciérrelo y reinícielo.
Kurkula

Respuestas:

323

Esto es lo que solía matar el progreso en el puerto 4200

Para usuarios de Linux:

sudo kill $(sudo lsof -t -i:4200)

También puedes probar esto:

sudo kill `sudo lsof -t -i:4200`

Para usuarios de Windows:

El número de puerto 4200 ya está en uso. Abra el cmd como administrador. Escriba el siguiente comando en cmd:

netstat -a -n -o

Y luego, busque el puerto con el número de puerto 4200 haciendo clic derecho en el terminal y haga clic en buscar, ingrese 4200 en "buscar qué" y haga clic en "buscar siguiente": Digamos que encontró que el número de puerto 4200 es usado por pid 18932. Escriba el comando a continuación en cmd:

taskkill -f /pid 18932

Para UNIX:

alias ngf='kill -9  $(lsof -t -i:4200);ng serve'

Ahora ejecute ngf (en lugar de ng serve ) en la terminal desde la carpeta del proyecto. Esto eliminará todos los procesos que usan el puerto 4200 y ejecuta su proyecto Angular.

Bart Hoekstra
fuente
3
Si bien me doy cuenta de que esta es la solución correcta, ¿no parece ser una solución horrible? ¿Qué sucede si quiero ejecutar ng serveen un directorio diferente? ¿No tiene sentido matar el servidor de esta manera y luego reiniciarlo en otro lugar o me falta algo?
Nathan Dunn
66
Puede especificar un puerto diferente con: --port <new_port>
estellezg
44
Esto mata al navegador predeterminado. Y no es útil.
shijin
77
esto mató la ventana de mi navegador. Sin embargo, finalmente lo descubrí ... ¡Había hecho una ^Zinstancia angular existente que estaba usando el puerto predeterminado, tonto!
quietContest
1
Para verificar rápidamente qué pid está usando el puerto 4200 en Windows, use netstat -a -n -o | findstr 4200
penta
186

Abre tu cmd.execomo administrator,

entonces Encuentra el PIDdeport 4200

netstat -ano | findstr :4200

Pid para puerto 4200

Aquí tengo 3 PID:

  • El rojo es de "ng-serve" (127.0.0.1:4200) que LISTENING
  • El verde es de "su navegador"

matar solo el puerto 4200 (matar el PID rojo):

taskkill /PID 15940 /F

nota: matar al verde solo hará que su navegador se cierre por la fuerza.

taskkill pid 15940

ahora puede hacer "ng-serve" para iniciar su aplicación angular en el mismo puerto 4200




Cosas adicionales:

One liner: después de buscar una forma de optimizar esto, aquí está el comando One-liner de esta respuesta: (agradecimiento especial a: Josep Alsina por estos consejos)

for /f "tokens=5" %a in ('netstat -ano ^| find "4200" ^| find "LISTENING"') do taskkill /f /pid %a
Anthony Kal
fuente
2
Recuerda hacerlo cmd, no Git Bash.
Leo
2
Syntsax para GitBash en Windows netstat -ano | Findstr: 4200; taskkill -PID <PID establecido> -F
intotecho
La actualización de GIt Bash solucionó mi problema
Ismail Farooq
90

En Mac OS X necesita el siguiente comando:

sudo lsof -t -i tcp:4200 | xargs kill -9

Recuerde que debe matar el servidor web de Angular con Command + C.

Julian Fraser
fuente
Trabajó en Ubuntu también.
Becario Senior
2
Comando + C es la clave para matar cualquier proceso. Yo y otros desarrolladores en prisa presionamos el comando + z, que simplemente suspende el proceso en lugar de matarlo.
Jasmeet
2
¡@jasmeet presionando Comando + Z también me ha recibido varias veces!
Julian Fraser
26

No Ctrl + Z, debe ejecutar para detener Ctrl + C

Emir Mamashov
fuente
con mucho, la solución más simple para el problema, incluso si técnicamente no responde a la pregunta del OP
Florian
@Flo Creo que es una solución, porque mi respuesta corrige la razón, no los efectos
Emir Mamashov
16

Use este comando para matar ng:

pkill -9 ng
Lolita
fuente
3
Lo usé en mi ubuntu 18.04. brilló mi pantalla y me llevó al inicio de sesión de ubuntu matando todas las aplicaciones
srv_sud
Esto mata a todas las otras aplicaciones. Pero finalmente funciona para mí ... gracias
Sakthikanth
13

ng serve --port <YOUR_GIVEN_PORT_NUMBER>

Debe probar el comando anterior para ejecutar en su puerto dado.

Shubham Verma
fuente
Funcionó bien en ubuntu 18.
Mark Odey
11

Cuando lo use Ctrl+Z, suspenderá una tarea en ejecución pero no la matará. Más tarde puede usar el comando fgpara reanudar la tarea. Si desea salir ng serve, debe usar Ctrl+Cen su lugar, en el que también liberará el puerto 4200.

Romano Lo
fuente
7

En este momento puede configurar --port 0para obtener un puerto libre.

ng serve --port 0 // will get a free port for you
Yevhen
fuente
En este caso, no olvide usar la --openbandera, de lo contrario no sabrá en qué puerto se inició.
rplaurindo
1
Terminal me dijo qué puerto eligió. Esta debería ser la respuesta correcta para los usuarios de Windows.
Ron
6

Podemos matar el puerto a la fuerza siguiendo el comando.

kill -2 $(lsof -t -i:4200)
sharath parupati
fuente
6

Para ventanas:

Abra el símbolo del sistema y

tipo: netstat -a -o -n

Encuentra el PID del proceso que quieres matar.

Tipo: taskkill /F /PID 16876

Este 16876 - es el PID para el proceso que quiero matar - en ese caso, el proceso es 4200 - verifique el archivo adjunto. Puede dar cualquier número de puerto.

ingrese la descripción de la imagen aquí

Ahora, escriba: ng servepara iniciar su aplicación angular en el mismo puerto 4200

Jay Kareliya
fuente
5

Estoy compartiendo esto ya que los dos comandos fowling no hicieron el trabajo en mi mac:

sudo kill $(sudo lsof -t -i:4200)

sudo kill `sudo lsof -t -i:4200`

El siguiente sí, pero si estaba usando el terminal integrado en Visual Code, intente usar el terminal de su máquina y agregue el comando fowling:

lsof -t -i tcp:4200 | xargs kill -9
Ahmed Hadi
fuente
Gracias, funciona para mí, toda la respuesta anterior no funciona para mí, ya que estoy usando el terminal VScode en el sistema operativo Ubuntu.
SURENDRANATH S
4
netstat -anp | grep ":4200"

Esto te dirá quién tiene el puerto.

Joshua
fuente
¿es - anp? eso no devolvió nada, así que simplemente agregué un espacio porque su comando estaba pidiendo "nestat: la opción requiere un argumento --p"
peztherez
Tu netstat debe ser diferente al mío. Tal vez agregue una etiqueta del sistema operativo.
Joshua
4
ng serve --port 4201 --live-reload-port 4200

y acceder usando localhost:4201

Esto debería funcionar como una solución temporal.

o

intente enumerar el uso del puerto usando
lsof -i:4200
y elimínelo manualmente usando
sudo kill -9 <Process PID using port 4200>

shijin
fuente
4

En resumen, hay más de una solución: 1) Al usar otro puerto para definir el número de puerto,

ng serve --open --port 4201

2) matando el proceso

ctrl + c // for kill
Close all node terminal which is related for running the app.

3) Tipo

netstat -a -n -o

en el símbolo del sistema, busque el PID del puerto relacionado y elimínelo

taskkill /F /PID (pid number)

4) Tipo netstat -ano|findstr :4200

tomó el PID de la dirección extranjera que contiene el número de puerto y luego lo mató

taskkill /PID (pid number)/F

Mohaimin Moin
fuente
4

Para detener todo el puerto local que se ejecuta en Windows, use este simple comentario solo en lugar de buscar pid por separado usando netstat,

Encuentra todos los pid y detiene el puerto local que se está ejecutando actualmente,

taskkill /im node.exe /f
saravana va
fuente
útil para angular 4 en windows :)
Icarus
3

Simplemente reinicie el IDE que está utilizando, entonces funcionará.

aldo
fuente
3

Con ctrl + z pones el programa en segundo plano. En Linux, puede recuperar la sesión en primer plano con el siguiente comando:

fg ng serve

No necesitas matar el proceso.

Espíritu
fuente
2

El comando más simple de una línea:

 sudo fuser -k 4200/tcp
Salman Ahmed
fuente
2

En mi caso, ninguno de los mencionados anteriormente funcionó.

UBUNTU 18.04 VERSIÓN

El siguiente comando funcionó.

sudo kill -9 $(lsof -i tcp:4200 -t)
Extraterrestre
fuente
2

Si está utilizando VSCode, tiene la opción de eliminar el terminal y agregar un nuevo terminal. Cierre la pestaña y abra una nueva pestaña. Funcionó para mi.

Editado: use ctrl + c y presione y. Sin matar terminal también, puede continuar. Si desea abrir una nueva instancia de Visual Studio y ejecutar una aplicación diferente, puede usar ng serve --port 4401.

TRIBATÍA DE DIBYA RANJAN
fuente
2

El terminal VScode en Ubuntu OS usa el siguiente comando para matar el proceso

lsof -t -i tcp:4200 | xargs kill -9
ENCENDIDO S
fuente
1

También puede probar con esto para ejecutar su aplicación en código visual studio:

ng serve --open --port 4201

Puedes dar cualquier número de puerto.

HarmesH KaushiK
fuente
1

Dice que ya estamos ejecutando los servicios con el puerto no 4200, use otro puerto en lugar de 4200. El siguiente comando es para resolver el problema

ng serve --port 4300

dharma rao Palli
fuente
1

puede usar fuser -k 4200 / tcp si es un sistema operativo Linux

Machhindra Neupane
fuente
1

Elimine el proceso y cierre el terminal que utilizó para ejecutar la aplicación en ese puerto.

Georgi Georgiev
fuente
1

En lugar de matar todo el proceso o el uso ctrl+z, simplemente puede usar ctrl+cpara detener el servidor y puede usarlo felizmente ng serve commandsin ninguno errorso si desea ejecutar en un puerto diferente, simplemente use este comando ng serve --port portno(ex: ng serve --port 4201).

Alekya
fuente
1

Para Ubndu 18.04 sudo lsof -t -i tcp: 3000 | xargs kill -9

Sucede cuando el puerto se finalizó sin éxito, por lo que este comando lo terminará 4200 o 3000 o 3300 cualquiera

usuario2642281
fuente
0

También enfrenté el mismo mensaje de error, así que intenté ng serve --port 12012 y funcionó bien.

Sachin Gaikwad
fuente
66
No podemos asignar un nuevo puerto cada vez.
shijin
10
¿Quién está votando respuestas como estas?
shark1608
0

Si compila su código JS angular tanto en CMD como en IDE, se produce este problema. En CMD, su código JS angular se compila automáticamente cada vez que cambia su código JS angular en IDE y luego su IDE desea ocupar el mismo puerto, es decir, 4200 que ya está ocupado por CMD. Entonces, hay una solución simple para este problema, simplemente cierre su cmd mientras compila su código en IDE.

vishal
fuente
0

Me enfrentaba al mismo problema cada vez que tenía que matar el puerto.

Lo intenté en ./node_modules/.bin/ng serve --proxy-config proxy.conf.json --host 0.0.0.0lugar de npm starty funciona

Ismail Farooq
fuente