EADDRINUSE (errno 98)
errno 98
Message officiel (tel qu'affiché à l'écran) : Address already in use
Aussi recherché sous la forme : Address already in use, errno 98, listen EADDRINUSE, address already in use :::3000
Ce que cela signifie
EADDRINUSE, « Address already in use » (errno 98 sous Linux, 48 sous macOS), signifie qu’un programme a tenté de se lier à une adresse IP et un port déjà détenus par un autre socket. Node.js l’affiche sous la forme « listen EADDRINUSE: address already in use :::3000 ». Le plus souvent, une ancienne instance tourne encore.
S'applique à : Linux, macOS (errno BSD), WSL, Conteneurs Docker
Comment corriger EADDRINUSE (errno 98)
- Trouvez le processus qui occupe le port : 'sudo lsof -i :3000' ou 'sudo ss -ltnp | grep :3000' (Windows : 'netstat -ano | findstr :3000')
- Arrêtez ce processus proprement, ou avec 'kill <pid>' s’il s’agit d’un serveur de développement resté actif
- Recherchez des services en double : une unité systemd, un conteneur Docker ('docker ps') ou un processus PM2 exécute peut-être déjà la même application
- Changez le port de votre application si les deux services doivent fonctionner
- Après un redémarrage, activez SO_REUSEADDR sur les sockets serveur afin que les connexions en TIME_WAIT n’empêchent pas la nouvelle liaison
- Si cela se produit dans les tests, donnez le port 0 à chaque serveur de test pour que le système attribue un port libre
Pourquoi cela se produit
Un seul socket peut normalement se lier à une paire adresse/port donnée. Serveurs de développement orphelins, seconde copie du service, redirections de ports Docker et sockets en TIME_WAIT sans SO_REUSEADDR provoquent le conflit.
FAQ
Comment arrêter le processus qui occupe le port 3000 ?
Exécutez 'lsof -i :3000' pour obtenir le PID, puis 'kill <PID>'. Sous Windows, utilisez 'netstat -ano | findstr :3000' puis 'taskkill /PID <PID> /F'.
Pourquoi le port est-il utilisé alors que rien ne tourne ?
Une instance précédente est peut-être encore en cours d’arrêt ou retenue en TIME_WAIT, ou bien un conteneur ou un service système est lié à ce port.
Erreurs liées
Source : Linux kernel errno.h · solutions rédigées et vérifiées par les éditeurs (voir notre politique éditoriale)
Dernière mise à jour :