"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.


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.


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

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.


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


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

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.


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.


7

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

ng serve --port 0 // will get a free port for you

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

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


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

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.


¿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>


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


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

útil para angular 4 en windows :)
Icarus

3

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


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.



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)

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.


2

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

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

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.


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



1

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


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).


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


0

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


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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.