à quoi process.env.PORT || 3000
sert Node.js? J'ai vu ça quelque part:
app.set('port', process.env.PORT || 3000);
S'il est utilisé 3000
comme port d'écoute, puis-je l'utiliser à la place?
app.listen(3000);
Sinon pourquoi?
à quoi process.env.PORT || 3000
sert Node.js? J'ai vu ça quelque part:
app.set('port', process.env.PORT || 3000);
S'il est utilisé 3000
comme port d'écoute, puis-je l'utiliser à la place?
app.listen(3000);
Sinon pourquoi?
Réponses:
Dans de nombreux environnements (par exemple Heroku), et par convention, vous pouvez définir la variable d'environnement PORT
pour indiquer à votre serveur Web sur quel port écouter.
Cela process.env.PORT || 3000
signifie donc : tout ce qui se trouve dans la variable d'environnement PORT, ou 3000 s'il n'y a rien.
Donc, vous passez cela app.listen
, ou à app.set('port', ...)
, et cela permet à votre serveur d'accepter un paramètre de l'environnement sur quel port écouter.
Si vous passez 3000
à codé en dur app.listen()
, vous êtes toujours à l'écoute sur le port 3000, ce qui peut être juste pour vous, ou non, en fonction de vos besoins et des exigences de l'environnement dans lequel vous exécutez votre serveur.
si vous exécutez node index.js
, Node utilisera3000
Si vous exécutez PORT=4444 node index.js
, Node utilisera process.env.PORT
ce qui équivaut à 4444
dans cet exemple. Exécutez avec sudo
pour les ports inférieurs à 1024.
Lors de l'hébergement de votre application sur un autre service (comme Heroku, Nodejitsu et AWS), votre hôte peut configurer indépendamment la process.env.PORT
variable 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 comme 3000
au lieu de process.env.PORT || 3000
où 3000 est votre paramètre statique, votre application entraînera une erreur de passerelle 500 car Amazon configure le port pour vous.
Il s'agit d'une application Express minimale qui se déploiera 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);
const {PORT = 3000} = process.env
Dans certains scénarios, port
ne peut être désigné que par l'environnement et est enregistré dans une variable d'environnement utilisateur. Voici comment les applications node.js fonctionnent avec.
L' process
objet est un global qui fournit des informations sur le processus Node.js actuel et le contrôle sur celui-ci. En tant que global, il est toujours disponible pour les applications Node.js sans utiliser require()
.
La process.env
propriété renvoie un objet contenant l'environnement utilisateur.
Un exemple de cet objet ressemble à:
{
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éfinir une nouvelle variable d'environnement utilisateur, pas de manière permanente
export MY_TEST_PORT=9999
app.js : lire la nouvelle variable d'environnement depuis l'application de nœud
console.log(process.env.MY_TEST_PORT)
terminal : exécutez l'application de nœud et obtenez la valeur
$ node app.js
9999