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 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 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?
0 votes
@Jonathan Bon à savoir sur
.listen()
. Ci-dessus, quand je dis "l'application fonctionne", c'est la même chose que vous disiez "pas d'erreurs 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 disiez "inaccessible depuis un navigateur". Tout l'accès depuis la même machine (mon serveur). Merci pour le retour.1 votes
@deitch J'utilise
$ superviseur app.js
ou$ PORT=[PORT] node app.js
lorsque je veux définir la variable de port d'environnement. Je vais mettre un exemple de code.0 votes
Ah, vous mettez toujours explicitement
3000
dans votre code... laissez-moi nettoyer votre code pour vous et rechercher cela dans ma réponse.0 votes
@BenjaminMartin Si vous obtenez une erreur pour quelque chose d'autre utilisant ce port, alors peut-être que vous ne stoppez pas correctement vos instances de
node
. Faites unps -ax| grep node
et assurez-vous qu'aucun processus node n'est déjà lié au port que vous essayez d'utiliser0 votes
Les principes que tout le monde expose sont corrects. Y a-t-il une chance d'obtenir un résumé ou de copier/coller l'essentiel de ce qui ne fonctionne pas?
0 votes
Il suffit de le préciser dans votre script de lancement
PORT=3001 DEBUG=myapp:* npm start