Faire écouter Node.js sur le bon port

3 min de lecture07 novembre 2026

Une application Node.js qui affiche « en ligne » côté processus peut rester injoignable si elle écoute sur le mauvais port ou sur la mauvaise interface. Sur l'hébergement d'applications, le port public est attribué par la plateforme : votre code doit le lire dans l'environnement et écouter sur toutes les interfaces, jamais sur un numéro codé en dur.

Lire le port fourni

La plateforme expose le port dans la variable PORT. Lisez-la au démarrage, convertissez-la en nombre et écoutez sur 0.0.0.0 :

JavaScript
const http = require('http');

const port = Number(process.env.PORT || 3000);
if (!Number.isInteger(port) || port <= 0) {
  console.error('PORT invalide');
  process.exit(1);
}

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('ok');
});

server.listen(port, '0.0.0.0', () => {
  console.log(`écoute sur le port ${port}`);
});

0.0.0.0 signifie « toutes les interfaces IPv4 ». Avec 127.0.0.1, le processus n'accepte que les connexions locales : le proxy de la plateforme ne peut pas l'atteindre. Sur Linux, :: écoute en IPv6 et accepte souvent aussi IPv4 en mode double pile, mais 0.0.0.0 reste le choix explicite pour ce type d'hébergement.

Erreurs fréquentes

Symptôme Cause probable Correctif
EADDRINUSE Deux processus sur le même port Arrêter l'ancien, redémarrer proprement
EACCES Port inférieur à 1024 Utiliser le port fourni
Service « en ligne » mais injoignable Écoute sur 127.0.0.1 Écouter sur 0.0.0.0
ERR_SOCKET_BAD_PORT PORT absent ou non numérique Valider au démarrage, échouer clairement
Redémarrages en boucle Exception avant listen Lire la première erreur du journal

Un EADDRINUSE sur l'hébergement géré indique souvent un second listen() dans le code, ou une ancienne instance encore active. Sur un VPS, vous pouvez identifier le propriétaire avec ss -ltnp | grep :3000 (adaptez le numéro) ; les droits root sont alors nécessaires pour voir tous les processus.

Ne pas coder le port en dur

Le port peut changer si le service est recréé ou si l'allocation est modifiée. Un listen(3000) fonctionne en local et échoue le jour du redéploiement, ce qui rend l'incident difficile à relier à la configuration. Utilisez la même variable pour les URL internes que votre application génère, par exemple un lien de réinitialisation de mot de passe.

Ne faites pas confiance à un port fourni par le client dans une requête : un utilisateur ne doit pas pouvoir rediriger votre serveur vers une autre interface. Le port d'écoute vient de l'environnement, pas d'un en-tête HTTP.

Vérifier

  1. Redémarrez le service et cherchez la ligne d'écoute dans la console.
  2. Testez l'URL ou l'allocation indiquée par le panneau, pas localhost depuis votre machine.
  3. Envoyez une requête simple et vérifiez le code HTTP :
Bash
curl -i http://ADRESSE_FOURNIE:PORT/
  1. Si le processus tourne mais que la requête échoue, vérifiez d'abord l'interface d'écoute, ensuite le routage de la plateforme, puis seulement votre logique applicative.

Publicité

Cet article vous a-t-il aidé ?

À lire aussi