à quoi sert process.env.PORT || 3000
dans Node.js? J'ai vu ça quelque part:
app.set('port', process.env.PORT || 3000);
S'il est utilisé pour définir 3000
comme port d'écoute, puis-je l'utiliser à la place?
app.listen(3000);
Si non pourquoi
Dans de nombreux environnements (Heroku, par exemple), et par convention, vous pouvez définir la variable d'environnement PORT
pour indiquer à votre serveur Web le port d'écoute.
Donc, process.env.PORT || 3000
signifie: tout ce qui se trouve dans la variable d’environnement PORT, ou 3000 s’il n’ya rien.
Donc, vous transmettez ce app.listen
, ou à app.set('port', ...)
, et cela permet à votre serveur d’accepter un paramètre de l’environnement sur lequel le port doit être écouté.
Si vous passez 3000
codé en dur à app.listen()
, vous écoutez toujours sur le port 3000, ce qui peut être fait pour vous ou non, selon vos exigences et les exigences de l'environnement dans lequel vous vous trouvez. exécutez votre serveur.
si vous exécutez node index.js
, le nœud utilisera 3000
Si vous exécutez PORT=4444 node index.js
, Node utilisera process.env.PORT
, ce qui correspond à 4444
dans cet exemple. Exécutez avec Sudo
pour les ports inférieurs à 1024.
Lorsque vous hébergez votre application sur un autre service (comme Heroku, Nodejitsu et AWS), votre hôte peut configurer indépendamment la variable process.env.PORT
pour vous. Après tout, votre script s'exécute dans leur environnement.
C'est ce que fait Elastic Beanstalk d'Amazon. Si vous essayez de définir une valeur de port statique telle que 3000
au lieu de process.env.PORT || 3000
où 3000 est votre paramètre statique, votre application générera une erreur de passerelle 500 car Amazon configure le port pour vous.
Il s'agit d'une application Express minimale à déployer sur Elastic Beanstalk d'Amazon:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
// use port 3000 unless there exists a preconfigured port
var port = process.env.port || 3000;
app.listen(port);
Dans certains scénarios, port
ne peut être désigné que par l'environnement et est enregistré dans une variable d'environnement utilisateur. Vous trouverez ci-dessous comment les applications node.js fonctionnent avec.
L'objet process
est un objet global qui fournit des informations sur le processus Node.js en cours et le contrôle de celui-ci. En tant que global, il est toujours disponible pour les applications Node.js sans utiliser require()
.
La propriété process.env
renvoie un objet contenant l'environnement utilisateur.
Un exemple de cet objet ressemble à ceci:
{
TERM: 'xterm-256color',
Shell: '/usr/local/bin/bash',
USER: 'maciej',
PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
PWD: '/Users/maciej',
EDITOR: 'vim',
SHLVL: '1',
HOME: '/Users/maciej',
LOGNAME: 'maciej',
_: '/usr/local/bin/node'
}
Par exemple,
terminal: définit une nouvelle variable d'environnement utilisateur, pas de manière permanente
export MY_TEST_PORT=9999
app.js: lit la nouvelle variable d'environnement depuis le noeud app
console.log(process.env.MY_TEST_PORT)
terminal: lancer l'application de noeud et obtenir la valeur
$ node app.js
9999
La variable globale process.env est injectée par le Node au moment de l'exécution par votre application, et représente l'état de l'environnement système dans lequel se trouve votre application lorsqu'elle démarre. Par exemple, si le système a une variable PATH définie, celle-ci vous sera rendue accessible via process.env.PATH, que vous pourrez utiliser pour vérifier l'emplacement des fichiers binaires et les appeler de manière externe si nécessaire.