243 votes

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

Ce qui est process.env.PORT || 3000 utilisé dans Node.js ? J'ai vu cela quelque part :

 app.set('port', process.env.PORT || 3000);

S'il est utilisé pour définir 3000 comme port d'écoute, puis-je utiliser ceci à la place ?

app.listen(3000);

Si non, pourquoi ?

317voto

Nitzan Shaked Points 5333

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 il doit écouter.

Así que process.env.PORT || 3000 signifie : 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 "quel port écouter" de la part de l'environnement.

Si vous passez 3000 codé en dur pour app.listen() vous écoutez toujours le port 3000, ce qui peut vous convenir ou non, en fonction de vos besoins et des exigences de l'environnement dans lequel vous exécutez votre serveur.

101voto

  • si vous exécutez node index.js Le nœud utilisera 3000

  • Si vous exécutez PORT=4444 node index.js le nœud utilisera process.env.PORT qui est égal à 4444 dans cet exemple. Exécuter avec sudo pour les ports inférieurs à 1024.

54voto

ThisClark Points 22

Lorsque vous hébergez votre application sur un autre service (comme Heroku, Nodejitsu et AWS), votre hôte peut configurer de façon indépendante l'option 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 comme 3000 au lieu de process.env.PORT || 3000 où 3000 est votre paramètre statique, votre application donnera lieu à une erreur de passerelle 500 car Amazon configure le port pour vous.

Il s'agit d'une application Express minimale qui sera déployée 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);

13voto

themefield Points 393

Dans certains scénarios, port ne peut être désigné que par l'environnement et est enregistré dans une variable d'environnement de l'utilisateur. Voici comment les applications node.js fonctionnent avec elle.

El process est un objet global qui fournit des informations sur, et contrôle, le processus Node.js en cours. En tant que global, il est toujours disponible pour les applications Node.js sans utiliser la fonction require() .

El process.env renvoie un objet contenant l'environnement de l'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éfinir une nouvelle variable d'environnement utilisateur, non permanente

export MY_TEST_PORT=9999

app.js : lire la nouvelle variable d'environnement depuis l'application node

console.log(process.env.MY_TEST_PORT)

terminal : exécuter l'application node et obtenir la valeur

$ node app.js
9999

4voto

Dotenv est un module à dépendance nulle qui charge les variables d'environnement d'un fichier . fichier env. en process.env. Le stockage de la configuration dans l'environnement, séparément du code, repose sur la méthodologie des douze facteurs de l'application.

avec npm

npm install dotenv

ou avec du fil

yarn add dotenv

Utilisation

Dès que possible dans votre application, exigez et configurez dotenv.

require('dotenv').config()

créez d'abord un fichier .env dans l'explorateur de fichiers et écrivez dedans :

PORT : 8080

const http = require("http");

require("dotenv").config();

let port = process.env.PORT;
let host = process.env.HOST;

let server = http.createServer((req, res) => {
  console.log("Thanks for the request");
  res.writeHead(200, { "Content-Type": "text/plain" });
  res.end("You Rock");
});

server.listen(port, host, () => {
  console.log(`Server is listening ${host}:${port}`);
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X