“A porta 4200 já está em uso” ao executar o comando ng serve

179

Estou aprendendo angular 2 e, pela primeira vez, estou usando o projeto CLI angular para criar um projeto sandbox.

Consegui executar o comando "ng serve" e funciona muito bem. Eu queria impedir que ele rodasse, então executei o "Control Z".

Quando tentei executar o comando "ng-serve" novamente, obtive-me "A porta 4200 já está em uso".

Corri o "PS" para obter uma lista do PID e matei o PID para o angular-cli e executei o "ng-serve" novamente, mesmo assim, dá a mesma porta em erro de uso.

peztherez
fonte
Desenvolvedor de Windows ao longo da vida, passei os últimos meses em um Mac e treinei-me para usar o CMD + Z. Comecei a enfrentar esse problema no Windows, pois estava com o padrão CTRL + Z em vez de CTRL + C
Kildareflare
Se você estiver trabalhando no código do visual studio, feche-o e reinicie-o.
Kurkula 23/06

Respostas:

323

Isto é o que eu usei para matar o progresso na porta 4200

Para usuários Linux:

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

Você também pode tentar o seguinte:

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

Para usuários do Windows:

O número da porta 4200 já está em uso. Abra o cmd como administrador. Digite abaixo o comando no cmd:

netstat -a -n -o

E, em seguida, localize a porta com o número da porta 4200 clicando com o botão direito do mouse no terminal e clique em Localizar, digite 4200 em "encontre o que" e clique em "encontrar próximo": digamos que você descobriu que o número da porta 4200 é usado pelo pid 18932. Digite o comando abaixo em cmd:

taskkill -f /pid 18932

Para UNIX:

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

Agora execute o ngf (em vez do ng serve ) no terminal a partir da pasta do projeto. Isso matará todos os processos usando a porta 4200 e executa seu projeto Angular.

Bart Hoekstra
fonte
3
Embora eu perceba que esta é a solução correta, isso não parece ser uma solução horrível? E se eu quiser executar ng serveem um diretório diferente? Não faz sentido matar o servidor dessa maneira e depois reiniciá-lo em outro lugar ou estou faltando alguma coisa?
Nathan Dunn
6
Você pode especificar uma porta diferente com: --port <new_port>
estellezg
4
Isso mata o navegador padrão. E não ajuda.
Shijin
7
isso matou a janela do meu navegador. No entanto, eu descobri que ... Eu tinha feito uma ^Zinstância angular existente que estava usando a porta padrão, bobo!
quietContest
1
Para verificar rapidamente qual pid está usando a porta 4200 no Windows, use netstat -a -n -o | findstr 4200
penta
186

Abra seu cmd.execomo administrator,

Encontre o PIDdeport 4200

netstat -ano | findstr :4200

Pid para a porta 4200

Aqui eu tenho 3 PID:

  • O vermelho é de "ng-serve" (127.0.0.1:4200) que LISTENING
  • O verde é do "seu navegador"

mate apenas a porta 4200 (mate o PID vermelho):

taskkill /PID 15940 /F

nota: matar o verde só fará com que seu navegador seja fechado à força.

taskkill pid 15940

agora você pode "ng-serve" para iniciar seu aplicativo angular na mesma porta 4200




Coisas adicionais:

Um liner: Depois de procurar uma maneira de otimizar isso, aqui está o comando One-liner desta resposta: (agradecimentos especiais a: Josep Alsina por estas dicas)

for /f "tokens=5" %a in ('netstat -ano ^| find "4200" ^| find "LISTENING"') do taskkill /f /pid %a
Anthony Kal
fonte
2
Lembre-se de fazê-lo cmd, não Git Bash.
Leo
2
Syntsax para GitBash no Windows netstat -ano | findstr: 4200; taskkill -PID <PestablishedPID> -F
intotecho
A atualização do GIt Bash corrige o meu problema
Ismail Farooq
90

No Mac OS X, você precisa do seguinte comando:

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

Lembre-se de que você precisa matar o servidor da Angular com Command + C.

Julian Fraser
fonte
Trabalhou no Ubuntu também.
Becario Sênior
2
comando + C é a chave para matar qualquer processo. Eu e outros desenvolvedores às pressas, pressione o comando + z, que apenas suspende o processo em vez de matá-lo.
Jasmeet 31/07/19
2
@jasmeet pressionando Command + Z também me pegou várias vezes!
Julian Fraser
26

Não ctrl + Z, você deve executar para parar ctrl + C

Emir Mamashov
fonte
de longe a solução mais simples para o problema, mesmo que tecnicamente ele não responder à pergunta OP
Florian
@Flo Acho solução, porque a minha resposta corrige a razão, nem efeitos
Emir Mamashov
16

Use este comando para matar ng:

pkill -9 ng
Lolita
fonte
3
eu usei no meu ubuntu 18.04. ele brilhou minha tela e me levou para ubuntu sessão matando todos os aplicativos
srv_sud
Isso mata todos os outros apps.But finalmente funciona para mim ..thanks
Sakthikanth
13

ng serve --port <YOUR_GIVEN_PORT_NUMBER>

Você deve tentar o comando acima para executar em sua porta especificada.

Shubham Verma
fonte
Funcionou bem no ubuntu 18.
Mark Odey
11

Quando você usa Ctrl+Z, suspenderá uma tarefa em execução, mas não a matará. Posteriormente, você pode usar o comando fgpara continuar a tarefa. Se você quiser sair ng serve, use-o Ctrl+Cno qual também liberará a porta 4200.

Roman Lo
fonte
7

Agora você pode configurar --port 0para obter uma porta gratuita.

ng serve --port 0 // will get a free port for you
Yevhen
fonte
Nesse caso, não se esqueça de usar o --opensinalizador, caso contrário você não saberá em qual porta foi iniciada.
rplaurindo
1
Terminal me disse qual porta ele escolheu. Essa deve ser a resposta correta para os usuários do Windows.
Ron
6

Podemos matar a porta com força, seguindo o comando.

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

Para Windows:

Prompt de Comando Aberto e

tipo: netstat -a -o -n

Encontre o PID do processo que você deseja matar.

Tipo: taskkill /F /PID 16876

Este 16876 - é o PID do processo que eu quero matar - nesse caso, o processo é 4200 - verifique o arquivo anexado. Você pode fornecer qualquer número de porta.

insira a descrição da imagem aqui

Agora, digite: ng servepara iniciar seu aplicativo angular na mesma porta 4200

Jay Kareliya
fonte
5

Estou compartilhando isso, pois os dois comandos seguintes não fizeram o trabalho no meu mac:

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

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

O seguinte foi o caso, mas se você estivesse usando o terminal integrado no Visual Code, tente usar o terminal da máquina e adicione o comando fowling:

lsof -t -i tcp:4200 | xargs kill -9
Ahmed Hadi
fonte
Obrigado, ele funciona para mim, todas as respostas acima não funcionam para mim, pois estou usando o terminal VScode no Ubuntu OS.
SURENDRANATH S 5/03
4
netstat -anp | grep ":4200"

Isso informará quem tem a porta.

Joshua
fonte
é isso - anp? que nada retornou então eu só adicionei um espaço, porque o seu comando estava pedindo "nestat: opção requer um --P argumento"
peztherez
Sua netstat deve ser diferente da minha. Talvez adicione uma tag do sistema operacional.
Joshua
4
ng serve --port 4201 --live-reload-port 4200

e acessar usando localhost:4201

Isso deve funcionar como uma solução temporária.

ou

tente listar o uso da porta
lsof -i:4200
e matá-lo manualmente usando
sudo kill -9 <Process PID using port 4200>

shijin
fonte
4

Em resumo, há mais de uma solução: 1) Usando outra porta para definir o número da porta,

ng serve --open --port 4201

2) matando o processo

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

3) Tipo

netstat -a -n -o

no prompt de comando, localize a porta PID relacionada e mate-a

taskkill /F /PID (pid number)

4) Tipo netstat -ano|findstr :4200

tomou o PID do endereço estrangeiro que contém o número da porta e depois mata-o

taskkill /PID (pid number)/F

Mohaimin Moin
fonte
4

Para interromper toda a porta local em execução no Windows, use esse comentário simples sozinho, em vez de procurar pid separadamente usando netstat,

Ele encontra todo o pid e para a porta local que está atualmente em execução,

taskkill /im node.exe /f
saravana va
fonte
útil para angular 4 em janelas :)
Icarus
3

Basta reiniciar o IDE que você está usando, para que ele funcione.

aldo
fonte
3

Com ctrl + z, você coloca o programa em segundo plano. No Linux, você pode recuperar a sessão em primeiro plano com o seguinte comando:

fg ng serve

Você não precisa matar o processo.

Espírito
fonte
2

O comando mais simples de uma linha:

 sudo fuser -k 4200/tcp
Salman Ahmed
fonte
2

No meu caso, nenhuma das opções acima mencionadas funcionou.

UBUNTU 18.04 VERSÃO

Abaixo o comando funcionou.

sudo kill -9 $(lsof -i tcp:4200 -t)
Estrangeiro
fonte
2

Se você estiver usando o VSCode, terá a opção de eliminar o terminal e adicionar um novo terminal. Feche a guia e abra uma nova guia. Funcionou para mim.

Editado: use ctrl + ce pressione y. Sem matar o terminal também, você pode prosseguir. Se você deseja abrir uma nova instância do visual studio e executar um aplicativo diferente, pode usar o ng serve --port 4401.

DIBYA RANJAN TRIPATHY
fonte
2

Terminal VScode no Ubuntu OS use o seguinte comando para matar o processo

lsof -t -i tcp:4200 | xargs kill -9
SURENDRANATH S
fonte
1

Você também pode tentar executar o aplicativo no código do visual studio -:

ng serve --open --port 4201

você pode dar qualquer número de porta.

HarmesH KaushiK
fonte
1

Diz que já estamos executando os serviços com a porta no 4200, use outra porta em vez do 4200. O comando abaixo é para resolver o problema

ng servir --port 4300

dharma rao Palli
fonte
1

você pode usar o fuser -k 4200 / tcp se for o sistema operacional Linux

Machhindra Neupane
fonte
1

Finalize o processo e feche o terminal que você usou para executar o aplicativo nessa porta.

Georgi Georgiev
fonte
1

Em vez de interromper o processo ou usar todo ctrl+z, você pode simplesmente usar ctrl+cpara parar o servidor e usar alegremente ng serve commandsem nenhum errorsou, se desejar executar em uma porta diferente, basta usar este comando ng serve --port portno(ex: ng serve --port 4201).

Alekya
fonte
1

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

Isso acontece quando a porta foi encerrada sem êxito, portanto este comando a encerrará 4200 ou 3000 ou 3300

user2642281
fonte
0

Também enfrentei o mesmo erro msg, então tentei ng serve --port 12012 e funcionou bem.

Sachin Gaikwad
fonte
6
nós não podemos alot novo porto toda vez.
Shijin
10
Quem está votando respostas como estas?
shark1608
0

Se você estiver compilando seu código JS angular no CMD e no IDE, esse problema ocorrerá. No CMD, seu código JS angular é compilado automaticamente sempre que você altera seu código JS angular no IDE e, em seguida, seu IDE deseja ocupar a mesma porta, por exemplo, 4200, que já é ocupada pelo CMD. Portanto, existe uma solução simples para esse problema, basta fechar o seu cmd ao compilar seu código no IDE.

vishal
fonte
0

Eu estava enfrentando o mesmo problema toda vez que tenho que matar o porto.

Eu tentei em ./node_modules/.bin/ng serve --proxy-config proxy.conf.json --host 0.0.0.0vez de npm starte seus trabalhos

Ismail Farooq
fonte