web-dev-qa-db-fra.com

Node.js Port 3000 est déjà utilisé, mais ce n'est pas le cas?

Je travaille avec un projet node.js depuis quelques semaines et il fonctionne très bien. J'utilise généralement 'npm start' pour exécuter mon application et la visualiser dans un navigateur sur le port 3000 de localhost.

Aujourd'hui, j'ai commencé à rencontrer l'erreur suivante lors de l'utilisation de 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 s'exécute sur le port 3000. Pourquoi est-ce que je recevrais 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 alors 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 l'aide! 

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

35
user2573690

Vous pouvez chercher comment tuer ce processus.

Pour la recherche Linux/Mac OS (Sudo), exécutez ceci dans le terminal:

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

Sous Windows:

netstat -ano | findstr :3000
tskill typeyourPIDhere 

change tskill pour taskkill dans git bash

81
Animesh Singh

Pour les fenêtres, Le gestionnaire de tâches montrerait certainement un processus de nœud en cours d'exécution.

14
P.V. THOMAS

Cela arrive parfois, comme @sova a proposéCela m’arrive parfois, à l’utilisation de l’EADDR. En règle générale, une fenêtre de terminal qui exécute l'application se cache en arrière-plan.Et c'est aussi vrai avec moi.

Cela arrive, lorsque vous avez ouvert le terminal pendant longtemps, ouais vous avez raison, vous avez arrêté le processus. Mais parfois, cela ne s'est pas arrêté en arrière-plan.La meilleure solution consiste donc à fermer le terminal et à le redémarrer.Cela résoudra votre problème. Parce que dans mon cas ça marche.

Également, 

Sudo lsof -i:<PORT_NO>

ferme l'instance pour l'heure actuelle mais ne peut pas arrêter le processus en arrière-plan. Donc pour une fois, 

Sudo kill <PID>

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

Donc, quitter le terminal va résoudre le problème. OR 

  killall -9 node
11
techyaura

Меня такая же проблема. (Следующие шаги хорошо работают sous Windows 10):

  1. Открыть диспетчер задач (нажмитеCtrl+Alt+Delete)
  2. Выберите вкладку "Процессы"
  3. Искать 'Node.js: серверный JavaScript'
  4. Выберите его и нажмите кнопку "Завершить задачу"

Теперь вы можете запустить npm start.

Надеюсь, то поможет вам.

10
Mahyar

Cela m'arrive parfois, l'utilisation de l'EADDR. En règle générale, une fenêtre de terminal qui exécute l'application se cache en arrière-plan. Vous pouvez arrêter le processus avec ctrl + C dans la fenêtre du terminal. 

Ou peut-être écoutez-vous le port plusieurs fois pour copier/pâtes =)

3
sova

Venu de Google ici avec une solution pour High Sierra.

Quelque chose a changé dans la configuration réseau de macos et certaines applications (y compris ping) ne peuvent pas résoudre localhost.

Éditer/etc/hosts semble être un correctif:

cmd: Sudo nano /etc/hosts/ content 127.0.0.1 localhost

Ou simplement (si vous êtes sûr que votre/etc/hosts est vide) Sudo echo '127.0.0.1 localhost' > /etc/hosts

2
sznowicki

J'ai vu la même chose et essayé toutes les suggestions ci-dessus sans succès. Voici les étapes qui résolvent le problème pour moi: - désactiver le wifi - npm start

Je ne sais pas exactement quel est le problème fondamental, mais cela l'a résolu pour moi.

2
James Smith

Ouvrez le Gestionnaire des tâches (appuyez sur Ctrl + Alt + Suppr.) Sélectionnez l'onglet "Processus". Recherchez "Node.js: JavaScript côté serveur". Sélectionnez-le et cliquez sur le bouton "Terminer la tâche".

1
Omar bakhsh

Il peut s’agir d’un processus d’administration exécuté en arrière-plan et netstat ne l’affiche pas.
Utilisez tasklist | grep node pour trouver le PID de ce processus administratif, puis kill PID

0
tnoel999888

J'ai passé 2h à découvrir pourquoi EADDRINUSE ne m'autorisait pas à lancer une application (les autres serveurs nœud-express étaient ok) ... cela a commencé à fonctionner après l'ajout du code lazyConnect: true, à la source de données. 

Ne me demandez pas pourquoi cela a aidé. Je ne sais pas. Je mets cette information ici juste pour les personnes ayant le même problème. 

0
test30

Dans les scripts package.json inlcude:

"start": "nodemon app.js --delay 1500ms"

Je pense que le problème était pour moi le temps où l'ancien port ne s'arrêtait pas à temps par nodemon pour le redémarrage. J'ai connu le problème en utilisant multer.

0
Kalkhas

J'ai eu ce problème en utilisant Git Bash sous Windows. Je lance npm start ou node app.js. Après avoir brièvement terminé avec Ctrl + C et essayé de redémarrer le serveur en utilisant npm start ou node app.js, je reçois ce message d'erreur.

Lorsque je fais cela avec l'invite de commande Windows normale, cependant, cela fonctionne bien.

Ou Vous pouvez le faire d'une autre manière. Ouvrez le Gestionnaire de tâches et recherchez la ligne " Node.js: JavaScript côté serveur ". Sélectionnez cette option et terminez la tâche . Cela devrait fonctionner maintenant.

Merci.

0
Amanullah Aman

Pour les utilisateurs de Windows, vous pouvez utiliser CurrPorts tool pour supprimer facilement les ports utilisés

 enter image description here

0
Zuhair Taha

Essayez d'ouvrir le localhost dans votre navigateur. Il suffit de taper: localhost:3000 dans la barre d'adresse.

Si l'application s'ouvre, cela signifie que votre précédent npm run est toujours actif. Maintenant, vous pouvez simplement modifier le code et voir les effets si vous concevez la même application ou si vous voulez exécuter une autre application, ajustez simplement le code (dans index.js de l'application en cours d'exécution) un peu et ( actualisez probablement l'onglet du navigateur) pour le faire planter;) ..... Maintenant, exécutez à nouveau npm run start à partir de votre nouveau répertoire d'applications. J'espère que cela t'aides! :)

ou

Vous pouvez ouvrir le gestionnaire de tâches (WINDOWS_KEY + X> Gestionnaire de tâches) et afficher la ligne "Node.js: JavaScript côté serveur". Sélectionnez cela et terminez la tâche .... Cela devrait fonctionner maintenant!



Sinon, changez le fichier .env de votre application pour inclure port:3002 et exécutez la nouvelle application. Cela vous permettra d'exécuter deux applications distinctes sur des ports différents. À votre santé!!

0
Mohit Singh

si vous utilisez webstorm, assurez-vous que votre port par défaut n'est pas 3000 de fichier -> paramètres -> Générer, Exécution, Déploiement -> Debugger.

Port du serveur intégré

et réglez-le sur "63342" ou consultez cette réponse Modifier le port WebStorm LiveEdit (63342)

0
Muhammad Saleh

J'ai trouvé cette solution facile pour les utilisateurs de Mac:

killall node
0
Ryan Dhungel