113 votes

L'application Node.js/Express.js ne fonctionne que sur le port 3000

J'ai une application Node.js/Express.js exécutée sur mon serveur qui ne fonctionne que sur le port 3000 et j'essaie de comprendre pourquoi. Voici ce que j'ai trouvé :

  • Sans spécifier de port (app.listen()), l'application s'exécute mais la page web ne se charge pas.
  • Sur le port 3001 (app.listen(3001)) ou tout autre port qui n'est pas utilisé, l'application s'exécute mais la page web ne se charge pas.
  • Sur le port 2999, l'application lance une erreur car autre chose utilise ce port.
  • Sur le port 3000, l'application s'exécute et la page web se charge correctement.

Je sais que les applications Express sont configurées par défaut sur le port 3000. Mais étrangement, mon application ne fonctionne que lorsque je la lance explicitement sur le port 3000 (app.listen(3000)).

J'ai trouvé ceci à la ligne 220 de /usr/bin/express :

app.set(\'port\', process.env.PORT || 3000);

Cela fait comme précédemment mentionné : définir le port sur ce qui est spécifié ou sur 3000 s'il n'y a rien de spécifié.

Comment pourrais-je faire fonctionner mon application sur un port différent comme 8080 ou 3001 ?

Merci !

Modification : Exemple de Code (Application Node/Express très simple)

var express = require("express");
var app = express();

app.get('/', function(req, res){
    res.send('hello world'); 
});

// Ne fonctionne que sur 3000 quel que soit le port environnemental défini ou la façon dont je définis [valeur] dans app.set('port', [valeur]).
app.listen(3000);

0 votes

1) Un port est requis par .listen(), donc vous ne devriez pas essayer de vous en passer. 2) Rencontrez-vous des erreurs lorsque vous exécutez l'application? Ou semble-t-elle tout simplement inaccessible depuis un navigateur? 3) Essayez-vous d'accéder au site sur le même machine avec localhost:3000, localhost:3001, etc.? Si vous utilisez deux machines, un client et un serveur, vous devrez ajouter des exceptions au pare-feu sur le serveur pour permettre à Node de recevoir des requêtes du client.

0 votes

Comment lancez-vous l'application ?

0 votes

Y a-t-il une chance que vous puissiez mettre en ligne une version épurée/sanitisée dans un gist?

0voto

Samuel Adranyi Points 71

Si vous utilisez Nodemon, je suppose que le PORT 3000 est défini dans nodemonConfig. Vérifiez si c'est le cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X