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.
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
Pour les fenêtres, Le gestionnaire de tâches montrerait certainement un processus de nœud en cours d'exécution.
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
Меня такая же проблема. (Следующие шаги хорошо работают sous Windows 10):
Теперь вы можете запустить npm start
.
Надеюсь, то поможет вам.
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 =)
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
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.
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".
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
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.
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.
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.
Pour les utilisateurs de Windows, vous pouvez utiliser CurrPorts tool pour supprimer facilement les ports utilisés
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é!!
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)
J'ai trouvé cette solution facile pour les utilisateurs de Mac:
killall node