"Le port 4200 est déjà utilisé" lors de l'exécution de la commande ng serve

179

J'apprends angular 2 et pour la première fois j'utilise le projet angular CLI pour créer un projet sandbox.

J'ai pu exécuter la commande "ng serve" et cela fonctionne très bien. Je voulais l'empêcher de fonctionner alors j'ai lancé "Control Z".

Quand j'ai essayé d'exécuter à nouveau la commande «ng-serve», cela me donne «Le port 4200 est déjà utilisé».

J'ai couru "PS" pour obtenir une liste du PID et tué le PID pour le angular-cli et exécuté "ng-serve" encore une fois il donne le même port en erreur d'utilisation.

Peztherez
la source
Un développeur Windows de longue date, j'ai passé les derniers mois sur un Mac et je me suis formé à l'utilisation de CMD + Z. J'ai commencé à rencontrer ce problème sous Windows car je devais par défaut CTRL + Z au lieu de CTRL + C
Kildareflare
Si vous travaillez sur du code Visual Studio, fermez-le et redémarrez-le.
Kurkula

Réponses:

323

C'est ce que j'ai utilisé pour tuer la progression sur le port 4200

Pour les utilisateurs Linux:

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

Vous pouvez également essayer ceci:

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

Pour les utilisateurs de Windows:

Le numéro de port 4200 est déjà utilisé. Ouvrez la cmd en tant qu'administrateur. Tapez la commande ci-dessous dans cmd:

netstat -a -n -o

Et puis, trouvez le port avec le numéro de port 4200 par un clic droit sur le terminal et cliquez sur trouver, entrez 4200 dans "trouver quoi" et cliquez sur "trouver suivant": Disons que vous avez trouvé que le numéro de port 4200 est utilisé par pid 18932. Tapez la commande ci-dessous dans cmd:

taskkill -f /pid 18932

Pour UNIX:

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

Maintenant, exécutez ngf (au lieu de ng serve ) dans le terminal à partir du dossier du projet. Cela tuera tous les processus utilisant le port 4200 et exécutera votre projet Angular.

Bart Hoekstra
la source
3
Bien que je réalise que c'est la bonne solution, cela ne semble-t-il pas être une solution horrible? Et si je souhaite exécuter ng servesur un autre répertoire? Cela n'a pas de sens de tuer le serveur de cette façon, puis de le redémarrer ailleurs ou est-ce que je manque quelque chose?
Nathan Dunn
6
Vous pouvez spécifier un port différent avec: --port <new_port>
estellezg
4
Cela tue le navigateur par défaut. Et pas utile.
shijin
7
cela a tué la fenêtre de mon navigateur. Je l'ai finalement compris ... J'avais fait un ^Zsur une instance angulaire existante qui utilisait le port par défaut, idiot moi!
quietContest
1
Pour vérifier rapidement quel pid utilise le port 4200 dans Windows, utilisez netstat -a -n -o | findstr 4200
penta
186

Ouvrez votre cmd.exesous administrator,

puis trouvez le PIDdeport 4200

netstat -ano | findstr :4200

Pid pour le port 4200

Ici, j'ai 3 PID:

  • Le rouge est de "ng-serve" (127.0.0.1:4200) qui LISTENING
  • Le vert provient de "votre navigateur"

tuer uniquement le port 4200 (tuer le PID rouge):

taskkill /PID 15940 /F

note: tuer le vert ne fera que fermer votre navigateur de force.

taskkill pid 15940

maintenant vous pouvez faire "ng-serve" pour démarrer votre application angulaire sur le même port 4200




Trucs supplémentaires:

One liner: Après avoir cherché un moyen d'optimiser cela, voici la commande One-liner de cette réponse: (merci spécial à: Josep Alsina pour ces conseils)

for /f "tokens=5" %a in ('netstat -ano ^| find "4200" ^| find "LISTENING"') do taskkill /f /pid %a
Anthony Kal
la source
2
N'oubliez pas de le faire cmd, non Git Bash.
Leo
2
Syntsaxe pour GitBash sous Windows netstat -ano | findstr: 4200; taskkill -PID <establishedPID> -F
intotecho
La mise à jour de GIt Bash résout mon problème
Ismail Farooq
90

Sous Mac OS X, vous avez besoin de la commande suivante:

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

N'oubliez pas que vous devez tuer le serveur Web d'Angular avec Command + C.

Julian Fraser
la source
A également travaillé dans Ubuntu.
Becario Senior
2
command + C est la clé pour tuer n'importe quel processus. Moi-même et d'autres développeurs à la hâte, appuyez sur la commande + z, ce qui suspend simplement le processus plutôt que de le tuer.
Jasmeet
2
@jasmeet en appuyant sur Commande + Z m'a aussi eu un certain nombre de fois!
Julian Fraser
26

Pas ctrl + Z, vous devez exécuter pour arrêter ctrl + C

Emir Mamashov
la source
de loin la solution la plus simple au problème, même si techniquement elle ne répond pas à la question de l'OP
Florian
@Flo Je pense que la solution, parce que ma réponse corrige la raison, pas les effets
Emir Mamashov
16

Utilisez cette commande pour tuer ng:

pkill -9 ng
Lolita
la source
3
je l'ai utilisé sur mon ubuntu 18.04. il a flashé mon écran et m'a emmené à la connexion ubuntu tuant toutes les applications
srv_sud
Cela tue toutes les autres applications, mais fonctionne enfin pour moi ... merci
Sakthikanth
13

ng serve --port <YOUR_GIVEN_PORT_NUMBER>

Vous devriez essayer la commande ci-dessus pour s'exécuter sur votre port donné.

Shubham Verma
la source
A bien fonctionné sur ubuntu 18.
Mark Odey
11

Lorsque vous utilisez Ctrl+Z, vous allez suspendre une tâche en cours, mais pas la tuer. Vous pouvez utiliser ultérieurement la commande fgpour reprendre la tâche. Si vous souhaitez quitter ng serve, vous devez utiliser à la Ctrl+Cplace, dans lequel libérera également le port 4200.

Roman Lo
la source
7

À l'heure actuelle, vous pouvez définir --port 0pour obtenir un port gratuit.

ng serve --port 0 // will get a free port for you
Yevhen
la source
Dans ce cas, n'oubliez pas d'utiliser le --opendrapeau, sinon vous ne saurez pas dans quel port a été démarré.
rplaurindo
1
Le terminal m'a dit quel port il avait choisi. Cela devrait être la bonne réponse pour les utilisateurs de Windows.
Ron
6

Nous pouvons tuer le port de force en suivant la commande.

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

Pour les fenêtres:

Ouvrez l'invite de commande et

type: netstat -a -o -n

Trouvez le PID du processus que vous souhaitez tuer.

Type: taskkill /F /PID 16876

Celui-ci 16876 - est le PID pour le processus que je veux tuer - dans ce cas, le processus est 4200 - vérifiez le fichier joint.vous pouvez donner n'importe quel numéro de port.

entrez la description de l'image ici

Maintenant, tapez: ng servepour démarrer votre application angulaire sur le même port 4200

Jay Kareliya
la source
5

Je partage ceci car les deux commandes de fowling n'ont pas fait le travail sur mon mac:

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

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

Le suivant l'a fait, mais si vous utilisiez le terminal intégré dans Visual Code, essayez d'utiliser votre terminal machine et ajoutez la commande fowling:

lsof -t -i tcp:4200 | xargs kill -9
Ahmed Hadi
la source
Merci, cela fonctionne pour moi, toutes les réponses ci-dessus ne fonctionnent pas pour moi car j'utilise le terminal VScode dans Ubuntu OS.
SURENDRANATH S
4
netstat -anp | grep ":4200"

Cela vous dira qui a le port.

Joshua
la source
est-ce - anp? qui n'a rien retourné alors j'ai juste ajouté un espace parce que votre commande demandait "nestat: option nécessite un argument --p"
peztherez
Votre netstat doit être différent du mien. Ajoutez peut-être une balise OS.
Joshua
4
ng serve --port 4201 --live-reload-port 4200

et accéder en utilisant localhost:4201

Cela devrait fonctionner comme une solution temporaire.

ou

essayez de répertorier l'utilisation du port en utilisant
lsof -i:4200
et supprimez-le manuellement en utilisant
sudo kill -9 <Process PID using port 4200>

shijin
la source
4

En résumé, il existe plus d'une solution: 1) En utilisant un autre port pour définir le numéro de port,

ng serve --open --port 4201

2) en tuant le processus

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

3) Type

netstat -a -n -o

dans l'invite de commande, recherchez le PID de port associé et tuez-le en

taskkill /F /PID (pid number)

4) Type netstat -ano|findstr :4200

a pris le PID de l'adresse étrangère qui contient le numéro de port et ensuite le tuer en

taskkill /PID (pid number)/F

Mohaimin Moin
la source
4

Pour arrêter tout le port local en cours d'exécution dans Windows, utilisez ce simple commentaire seul à la place en recherchant pid séparément en utilisant netstat,

Il trouve tous les pid et arrête le port local en cours d'exécution,

taskkill /im node.exe /f
saravana va
la source
utile pour angular 4 dans windows :)
Icarus
3

Redémarrez simplement l'IDE que vous utilisez, puis cela fonctionnera.

aldo
la source
3

Avec ctrl + z, vous mettez le programme en arrière-plan. Sous Linux, vous pouvez remettre la session au premier plan avec la commande suivante:

fg ng serve

Vous n'avez pas besoin de tuer le processus.

Esprit
la source
2

La commande en une ligne la plus simple:

 sudo fuser -k 4200/tcp
Salman Ahmed
la source
2

Dans mon cas, aucun des éléments mentionnés ci-dessus n'a fonctionné.

VERSION UBUNTU 18.04

La commande ci-dessous a fonctionné.

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

Si vous utilisez VSCode, vous avez la possibilité de tuer le terminal et d'ajouter un nouveau terminal. Fermez l'onglet et ouvrez un nouvel onglet. Cela a fonctionné pour moi.

Modifié: utilisez ctrl + c et appuyez sur y. Sans terminal de mise à mort également, vous pouvez continuer. Si vous souhaitez ouvrir une nouvelle instance de Visual Studio et exécuter une autre application, vous pouvez utiliser ng serve --port 4401.

TRIPATHIE DIBYA RANJAN
la source
2

Le terminal VScode dans le système d'exploitation Ubuntu utilise la commande suivante pour tuer le processus

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

Vous pouvez également essayer avec ceci pour exécuter votre application dans le code de Visual Studio -:

ng serve --open --port 4201

vous pouvez donner n'importe quel numéro de port.

HarmesH KaushiK
la source
1

Il indique que nous exécutons déjà les services avec le port no 4200, veuillez utiliser un autre port au lieu de 4200. La commande ci-dessous permet de résoudre le problème

ng serve - port 4300

dharma rao Palli
la source
1

vous pouvez utiliser fuser -k 4200 / tcp s'il s'agit d'un système d'exploitation Linux

Machhindra Neupane
la source
1

Tuez le processus et fermez le terminal que vous avez utilisé pour exécuter l'application sur ce port.

Georgi Georgiev
la source
1

Au lieu de tuer tout le processus ou d'utiliser ctrl+z, vous pouvez simplement utiliser ctrl+cpour arrêter le serveur et l'utiliser ng serve commandsans problème errorsou si vous souhaitez exécuter sur un port différent, utilisez simplement cette commande ng serve --port portno(ex: ng serve --port 4201).

Alekya
la source
1

Pour Ubndu 18.04 sudo lsof -t -i tcp: 3000 | xargs tuer -9

Cela se produit lorsque le port a été interrompu sans succès, cette commande le terminera donc 4200 ou 3000 ou 3300 tout

user2642281
la source
0

J'ai également rencontré le même message d'erreur, alors j'ai essayé ng serve --port 12012 et cela a bien fonctionné.

Sachin Gaikwad
la source
6
nous ne pouvons pas beaucoup de nouveau port à chaque fois.
shijin le
10
Qui vote pour des réponses comme celles-ci?
shark1608
0

Si vous compilez votre code JS angulaire dans CMD et IDE, ce problème se produit. Dans CMD, votre code JS angulaire se compile automatiquement chaque fois que vous modifiez votre code JS angulaire dans IDE, puis votre IDE veut occuper le même port soit 4200 qui est déjà occupé par CMD Donc, il existe une solution simple à ce problème, fermez simplement votre cmd lors de la compilation de votre code dans l'IDE.

vishal
la source
0

J'étais confronté au même problème chaque fois que je devais tuer le port.

J'ai essayé au ./node_modules/.bin/ng serve --proxy-config proxy.conf.json --host 0.0.0.0lieu de npm startet ses travaux

Ismail Farooq
la source