273 votes

Le port 3000 de Node.js est déjà utilisé mais il ne l'est pas en réalité ?

Je travaille sur un projet node.js depuis quelques semaines et il fonctionne très bien. Habituellement, j'utilise npm start pour exécuter mon application et la visualiser dans un navigateur sur localhost, port 3000.

Aujourd'hui, j'ai commencé à obtenir l'erreur suivante en utilisant npm start :

Server started on port 3000                                                                                                                                                                                         
Port 3000 is already in use 

J'ai vérifié le moniteur de ressources et aucun autre processus ne fonctionne sur le port 3000. Pourquoi est-ce que je reçois ce message d'erreur ?

Dans mon app.js, j'ai le code suivant pour définir le port... est-ce incorrect ? Cela fonctionnait bien avant, donc je ne suis pas sûr de ce que je fais 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'));
});

Merci pour votre aide !


EDITAR:

J'ai essayé d'exécuter netstat et TCPView pour vérifier quel processus utilise le port, mais il n'y a rien qui utilise ce port. J'ai également essayé de redémarrer mon ordinateur portable, mais j'obtiens toujours la même erreur.

0 votes

Il y a un autre processus qui utilise ce port, c'est certain. Quel système d'exploitation essayez-vous d'utiliser ? Vous pouvez chercher sur google 'trouver quel processus utilise le port' pour votre système d'exploitation.

0 votes

Avez-vous essayé de naviguer vers localhost:3000 ?

0 votes

@tanaydin J'ai vérifié Resource Monitor sur Windows 10 et il n'y a aucun processus en écoute sur le port 3000. À moins qu'il n'y en ait un que je ne vois pas ?

538voto

Animesh Singh Points 1163

Vous pouvez chercher comment tuer ce processus.

Pour Linux/Mac Recherche OS (sudo) run ceci dans le terminal :

$ lsof -i tcp:3000
$ kill -9 PID

Sous Windows :

netstat -ano | findstr :3000
tskill typeyourPIDhere 

changement tskill para taskkill dans git bash

2 votes

J'ai essayé un certain nombre d'autres solutions sous Windows, mais celle-ci a trouvé le processus bizarre qui monopolisait le port. J'ai gagné un vote positif pour avoir inclus l'approche Linux en plus de fonctionner sous Windows.

3 votes

Tskill n'a pas fonctionné pour moi sous Windows. taskkill /F /PID myPIDhere - cela fonctionne.

5 votes

Je n'obtiens rien avec seulement lsof mais avec sudo lsof J'obtiens quelque chose, et tuer ce processus a résolu ce problème.

52voto

techyaura Points 2040

Cela arrive parfois, comme l'a proposé @sova Cela m'arrive parfois, EADDR en cours d'utilisation. En général, il y a une fenêtre de terminal cachée en arrière-plan qui exécute toujours l'application. Et ça me convient aussi.

Cela arrive, lorsque vous avez ouvert le terminal pendant longtemps, oui vous avez raison, vous avez arrêté le processus. Mais parfois, il ne s'est pas arrêté en arrière-plan. La meilleure solution est donc de fermer le terminal et de le relancer. Cela résoudra votre problème. Parce que dans mon cas, cela fonctionne.

Aussi,

sudo lsof -i:<PORT_NO>

fermer l'instance pour le moment mais impossible d'arrêter le processus en arrière-plan. Donc pour une fois,

sudo kill <PID>

fonctionne, mais lorsque nous mettons à jour notre code et sauvegardons, ce problème se reproduit comme avec Nodemon .

La sortie du terminal résoudra donc le problème. OU

  killall -9 node

5 votes

Ni lsof ni netstat n'ont donné de résultats, mais il semble qu'un processus utilise toujours le port. Après avoir consulté killall -9 node J'ai pu faire fonctionner le serveur localement.

0 votes

Merci pour la commande killall -9 node. ça a marché sur l'IDE goorm.

32voto

Mahyar Points 161

J'ai eu le même problème. (Les étapes ci-dessous fonctionnent bien sous Windows 10) :

  1. Ouvrez le gestionnaire des tâches (appuyez sur Ctrl + Alt + Delete )
  2. Sélectionnez l'onglet "Processus".
  3. Recherche pour "Node.js : Server-side JavaScript".
  4. Sélectionnez-le et cliquez sur le bouton "Terminer la tâche".

Maintenant, vous pouvez exécuter npm start .

J'espère que cela vous aidera.

25voto

P.V. THOMAS Points 408

Pour Windows, Le gestionnaire des tâches montre certainement un processus de nœud en cours d'exécution. Essayez de tuer le processus, cela résoudra le problème.

5voto

sova Points 1033

Cela m'arrive parfois, l'EADDR est utilisé. En général, il y a une fenêtre de terminal cachée en arrière-plan qui exécute toujours l'application. Vous pouvez arrêter le processus avec ctrl+C dans la fenêtre du terminal.

Ou, peut-être que vous écoutez le port plusieurs fois en raison de la copie/pasta =)

0 votes

Merci pour votre aide ! Je n'ai pas d'autre terminal Windows ouvert, y a-t-il autre chose que je devrais vérifier ?

0 votes

Trouvez n'importe quel processus node ou npm et terminez-le. Si vous avez toujours un problème, redémarrez la machine, ou choisissez simplement un port différent pour travailler. Il n'y a vraiment aucune raison pour que cela doit être le port 3000 ou 8080

0 votes

Je viens de créer une nouvelle application node et de la lancer sur le port 3000 et celle-ci semble fonctionner correctement, mais lorsque j'essaie de lancer mon projet existant, il est indiqué que le port est en cours d'utilisation. Avez-vous déjà rencontré ce problème ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X