J'ai une application Node.js / Express.js en cours d'exécution 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 sur tout autre port non utilisé, l'application s'exécute mais la page Web ne se charge pas. - Sur le port 2999, l'application renvoie une erreur car quelque chose d'autre 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 utilisent par défaut le port 3000. Mais étrangement, mon application ne fonctionne que lorsque je la fais explicitement fonctionner sur le port 3000 ( app.listen(3000)
).
J'ai trouvé ceci sur la ligne 220 de /usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
Ce qui fait comme indiqué précédemment: définir le port sur ce qui est spécifié ou sur 3000 si rien n'est spécifié.
Comment puis-je faire fonctionner mon application sur un autre port tel que 8080 ou 3001?
Merci!
Edit: Exemple de code (Node très simple / application Express)
var express = require("express");
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
// Only works on 3000 regardless of what I set environment port to or how I set [value] in app.set('port', [value]).
app.listen(3000);
.listen()
. Ci-dessus, quand je dis «l'application s'exécute», c'est la même chose que vous dites «aucune erreur lors de l'exécution de l'application». Quand je dis «la page Web ne se charge pas», c'est la même chose que vous dites «inaccessible depuis un navigateur». Tous les accès depuis la même machine (mon serveur). Merci pour les commentaires.
$ supervisor app.js
ou $ PORT=[PORT] node app.js
lorsque je veux définir la variable de port d'environnement. Je vais mettre en place un exemple de code.
port
est requis par.listen()
, vous ne devriez donc pas essayer de vous en passer. 2) Avez-vous des erreurs lors de l'exécution de l'application? Ou cela semble-t-il simplement inaccessible depuis un navigateur? 3) Vous essayez d'accéder au site Web sur la même machine aveclocalhost: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 demandes du client.