Je travaille sur un projet node.js depuis quelques semaines et cela fonctionne très bien. Habituellement, j'utilise npm start
pour exécuter mon application et l'afficher dans un navigateur sur localhost, port 3000.
Aujourd'hui, j'ai commencé à recevoir 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 je n'ai aucun autre processus en cours d'exécution sur le port 3000. Pourquoi recevrais-je 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 de 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!
ÉDITER:
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.
la source
netstat
dans une invite de commande ou vous connecter à localhost: 3000 avec un équivalent telnet - PuTTY, par exemple.app.listen()
déclarations dans votre application sur une autre.listen()
qui tente également de démarrer un serveur sur ce port. Le premier fonctionne, le second signale l'erreur. Recherchez votre code pour.listen
.Réponses:
Vous pouvez rechercher comment tuer ce processus.
Pour Linux / Mac OS, recherchez
(sudo) run
ceci dans le terminal:Sous Windows:
changer
tskill
pourtaskkill
dans git bashla source
lsof
mais avecsudo lsof
j'obtiens quelque chose, et tuer ce processus a résolu ce problème.Parfois, cela arrive, comme @sova l'a proposé Cela m'arrive parfois, EADDR en cours d'utilisation. En règle générale, une fenêtre de terminal se cache en arrière-plan et exécute toujours l'application. Et c'est aussi vrai avec moi.
Cela arrive, quand vous avez ouvert le terminal pendant longtemps, oui vous avez raison, vous devez arrêter le processus. Mais parfois, cela ne s'arrêtait pas en arrière-plan. La meilleure solution est donc de fermer le terminal et de le redémarrer. Cela résoudra votre problème. parce que dans mon cas, cela fonctionne.
Aussi,
ferme l'instance pour l'heure actuelle mais impossible d'arrêter le processus en arrière-plan. Donc pour une fois,
fonctionne, mais encore une fois, lorsque nous mettons à jour notre code et sauvegardons, ce problème se reproduit comme avec Nodemon .
Alors quitter le terminal résoudra le problème. OU
la source
killall -9 node
pu exécuter le serveur localement.Peut-être que vous pouvez prendre cela comme référence. Cette ligne de commande unique peut tuer le processus en cours d'exécution sur un port donné.
Pour tuer plusieurs ports.
la source
Pour Windows, le gestionnaire de tâches afficherait certainement un processus de nœud en cours d'exécution. Essayez de tuer le processus, cela résoudra le problème.
la source
J'ai eu le même problème. (Les étapes ci-dessous fonctionnent correctement sur Windows 10):
Vous pouvez maintenant courir
npm start
.J'espère que cela vous aide.
la source
J'ai vu la même chose et essayé toutes les suggestions ci-dessus sans succès. Voici les étapes qui le résolvent pour moi: - désactiver le wifi - démarrer npm (cela devrait fonctionner) - activer le wifi
Je ne sais pas exactement quel est le problème racine, mais cela l'a résolu pour moi.
la source
netstat -ano
n'a rien répertorié utilisant le port 3000.J'utilisais un serveur express avec nodemon sur NodeJS. J'ai reçu le message suivant et cela semble être une erreur:
Il existe une solution générale selon laquelle si vous mettez fin à toutes les connexions au serveur de nœuds, vous pouvez ajouter ce code dans votre fichier package.json:
De plus, j'ai trouvé plusieurs solutions Windows command et bash sur Win 10 x64.
Toutes mes notes sont ici:
# Mettre fin à toutes les connexions au serveur NodeJS
# Exemple: ouvrez le Gestionnaire des tâches de Windows et voyez le numéro PID "node.exe" sous Windows
# Tuer un processus dans Windows par numéro de port (exemple)
Pour aider:
Code 1:
Code 2:
Code 3:
# Ligne de commande pour consulter un port spécifique
en cmd:
en bash:
# Recherchez node.exe à l'aide de la commande "tasklist"
en cmd:
en bash:
la source
Tuer un processus qui possède le port 3000
Tout d'abord, voyons comment nous pouvons tuer un processus qui a un port ouvert.
En utilisant la commande lsof, nous pouvons récupérer le PID qui a le port donné:
Ensuite, nous pouvons tuer ce processus simplement en faisant:
Transformons cela en une seule ligne:
Si vous utilisez une variable d'environnement pour définir le port du serveur, nous pouvons le spécifier au lieu de coder en dur nos valeurs:
Enfin, nous pouvons par défaut sur le port 3000 si la variable d'environnement n'est pas définie:
Obtenir nodemon pour exécuter des hooks
Nodemon vous permet de configurer des hooks d'événement via le fichier de configuration nodemon.json:
Cela obligera nodemon à exécuter sh -c 'lsof -i:
${PORT:-3000} -t | xargs
kill chaque fois que votre application plante, tuant ainsi le processus enfant qu'elle a engendré et qui maintient le port ouvert.ou vous pouvez essayer celui-ci
par exemple:
la source
lsof -i :3000 -t
= \fuser -k port-number/tcp
Cela m'arrive parfois, EADDR en cours d'utilisation. En général, une fenêtre de terminal se cache en arrière-plan et 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 à cause de copy / pasta =)
la source
.listen()
plusieurs fois?Ouvrez le Gestionnaire de 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'
la source
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 le ping) ne peuvent pas résoudre localhost.
La modification de / etc / hosts semble être une solution:
cmd:
sudo nano /etc/hosts/
contenu127.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
la source
J'ai passé 2h à découvrir pourquoi
EADDRINUSE
ne me permettait pas de lancer une application (les autres serveurs node-express étaient ok) ... cela a commencé à fonctionner après avoir été ajoutélazyConnect: true,
à la configuration de 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.
la source
J'ai eu ce problème en utilisant Git Bash sous Windows. Je cours
npm start
, ounode app.js
. Après l'avoir terminé avec Ctrl + C brièvement et essayé de redémarrer le serveur en utilisantnpm start
ounode app.js
alors j'obtiens ce message d'erreur.Cependant, lorsque je fais cela avec l' invite de commande Windows standard , cela fonctionne bien.
Ou vous pouvez le faire d'une autre manière. Ouvrez le Gestionnaire des tâches et recherchez la ligne « Node.js: JavaScript côté serveur ». Sélectionnez cela et terminez la tâche . Cela devrait fonctionner maintenant.
Merci.
la source
Si vous ne souhaitez fermer qu'un seul port, exécutez simplement cette commande.
kill -9 $(lsof -t -i:3000)
La différence entre
pkill
etkill
est quelqu'un qui traite l'argile. Dans kill, vous appliquez un filtre. vous arrêtez simplement le port que vous voulez.La
pkill
commande ferme tous les processus de nœud.pkill -9 node
Utilisez pkill pour éviter les fuites de mémoire qui se produisent occasionnellement pendant le développement. s'il y a plus d'un nœud, cela les tue tous.
L'utilisation de scripts dans package.json est également illustrée.
la source
Essayez d'ouvrir l'hôte local dans votre navigateur. Tapez simplement:
localhost:3000
dans la barre d'adresse.Si l'application s'ouvre, cela signifie que votre précédente
npm run
est toujours active. Maintenant, vous pouvez simplement apporter des modifications au code et voir les effets si vous concevez la même application, ou si vous souhaitez exécuter une autre application, modifiez simplement le code (dans index.js de l'application précédemment en cours d'exécution) un peu et ( probablement rafraîchir l'onglet du navigateur) pour le faire planter;) ..... Maintenant,npm run start
recommencez à partir de votre nouveau répertoire d'application. J'espère que cela t'aides! :)ou
Vous pouvez ouvrir le Gestionnaire des tâches (WINDOWS_KEY + X> Gestionnaire des tâches) et vous verrez la ligne «Node.js: JavaScript côté serveur». Sélectionnez cela et terminez la tâche ... Cela devrait fonctionner maintenant !!
Sinon, modifiez le
.env
fichier de votre application pour inclureport:3002
et exécuter la nouvelle application. Cela vous permettra d'exécuter deux applications distinctes sur des ports différents. À votre santé!!la source
J'espère que cela aidera
la source
Simple sous Linux
la source
J'ai également rencontré le même problème. La meilleure façon de résoudre est (pour Windows) :
Accédez au gestionnaire de tâches .
Faites défiler et recherchez un processus de tâche nommé. Node.js: JavaScript côté serveur
Terminez cette tâche particulière.
Voilà! Maintenant, lancez npm et cela fonctionnera comme avant!
la source
Pour les utilisateurs de Windows, vous pouvez utiliser l' outil CurrPorts pour tuer facilement les ports sous utilisation
la source
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 d'administration, puiskill PID
la source
si vous utilisez webstorm, assurez-vous simplement que votre port par défaut n'est pas 3000 à partir du fichier -> paramètres -> Build, Execution, Deployment -> Debugger And there change
et définissez-le sur "63342" ou consultez cette réponse Modifier le port WebStorm LiveEdit (63342)
la source
Dans les scripts package.json inlcude:
Je crois que le problème était pour moi le moment où l'ancien port ne s'arrêtait pas à temps par nodemon pour le redémarrage. J'ai rencontré le problème en utilisant multer.
la source
Les méthodes server ou app listen () peuvent être ajoutées à 2 endroits. Recherchez les méthodes listen () dans le pour les démarrages de l'application, c'est pourquoi son retour en tant que serveur démarré au port XXXX et au port XXXX déjà utilisé, le message est côte à côte
la source
Dans ma situation, je venais de commencer à utiliser VS Code et j'avais suivi un tutoriel utilisant Sequelize. En fin de compte, j'avais un fichier bin / www qui contenait le listen (). Je ne savais pas à ce sujet et j'exécutais mon application en exécutant le nœud app.js, quand cela ne fonctionnait pas, j'ai ensuite ajouté dans le serveur express des éléments avec .listen () (qui fonctionnait bien).
Mais quand j'ai commencé à utiliser nodemon et VSCode, il était pointé sur bin / www et cela nécessitait mon app.js.
Pour faire court, j'avais ajouté .listen () à mon app.js et j'exécutais app.js directement alors que je n'aurais pas dû l'ajouter et exécuter bin / www.
la source
Dans ubuntu, saisissez d'abord le processus en utilisant le numéro de port: sudo lsof -i: 3000 puis utilisez la commande kill pour tuer le processus, par exemple si le processus PID est 4493, utilisez la commande: kill 4493 , pour mac ou Windows, recherchez la commande associée
la source
J'ai résolu ce problème parce que MongoDB ou il y a une autre application que vous l'aviez déjà exécutée sur ce port, donc pour le résoudre, tuez le processus du gestionnaire de tâches, ou changez simplement le numéro du port de 3000 à un autre.
la source
C'est très simple. Vous pouvez le réparer en 2 étapes faciles.
Il s'avère qu'un autre programme utilise cette variable. Habituellement, lorsque vous démarrez react-scripts, il recherchera une variable d'environnement avec ce titre PORT.
la source
Avant d'exécuter nodemon, veuillez d'abord démarrer mongod. Vous n'obtiendrez jamais cette erreur. :)
la source
recherchez tout processus en cours d'exécution sur le même port en entrant la commande:
Vous pouvez trouver le processus en cours d'exécution sur le port de nœud respectif, puis tuer le nœud en
Si le problème persiste, il suffit de tuer tous les nœuds
la source
Tue tous les ports en cours d'exécution (mac):
la source