web-dev-qa-db-fra.com

Qu'est-ce que process.env.PORT dans Node.js?

à 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

143
user-S

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.

197
Nitzan Shaked
  • 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.

59
Abdennour TOUMI

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);
27
ThisClark

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
4
themefield

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.

0