Recherche…


Accès aux variables d'environnement

La propriété process.env renvoie un objet contenant l'environnement utilisateur.

Il retourne un objet comme celui-ci:

{
  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'
}
process.env.HOME // '/Users/maciej'

Si vous définissez la variable d'environnement FOO sur foobar , elle sera accessible avec:

process.env.FOO // 'foobar' 

Arguments de ligne de commande process.argv

process.argv est un tableau contenant les arguments de la ligne de commande. Le premier élément sera node , le second élément sera le nom du fichier JavaScript. Les éléments suivants seront des arguments de ligne de commande supplémentaires.

Exemple de code:

Somme de tous les arguments de la ligne de commande

index.js

var sum = 0;
for (i = 2; i < process.argv.length; i++) {
    sum += Number(process.argv[i]);
}

console.log(sum);

Utilisation Exaple:

node index.js 2 5 6 7

La sortie sera 20

Une brève explication du code:

Ici, pour boucle for (i = 2; i < process.argv.length; i++) boucle commence par 2 car les deux premiers éléments du tableau process.argv sont toujours ['path/to/node.exe', 'path/to/js/file', ...]

Conversion en nombre Number(process.argv[i]) car les éléments du tableau process.argv sont toujours des chaînes

Utiliser différentes propriétés / configurations pour différents environnements tels que dev, qa, staging etc.

Les applications à grande échelle nécessitent souvent des propriétés différentes lorsqu’elles sont exécutées dans des environnements différents. Nous pouvons y parvenir en transmettant des arguments à l'application NodeJs et en utilisant le même argument dans le processus de noeud pour charger un fichier de propriétés d'environnement spécifique.

Supposons que nous ayons deux fichiers de propriétés pour un environnement différent.


  • dev.json

      {
          PORT : 3000,
          DB : {
              host : "localhost",
              user : "bob",
              password : "12345"
          }
      }
    
  • qa.json

      {
              PORT : 3001,
              DB : {
                  host : "where_db_is_hosted",
                  user : "bob",
                  password : "54321"
              }
      }
    

Le code suivant dans l'application exportera le fichier de propriétés respectif que nous souhaitons utiliser.

Supposons que le code soit dans environment.js

process.argv.forEach(function (val, index, array) {
    var arg = val.split("=");
    if (arg.length > 0) {
        if (arg[0] === 'env') {
            var env = require('./' + arg[1] + '.json');
            module.exports = env;
        }
    }
});

Nous donnons des arguments à l'application comme suit

node app.js env=dev

si nous utilisons gestionnaire de processus comme pour toujours aussi simple que

forever start app.js env=dev

Comment utiliser le fichier de configuration

 var env= require("environment.js");

Chargement des propriétés de l'environnement à partir d'un "fichier de propriétés"

  • Lecteur de propriétés d'installation:
npm install properties-reader --save
  • Créez un répertoire env pour stocker vos fichiers de propriétés:
mkdir env
  • Créer des environnements.js :
process.argv.forEach(function (val, index, array) {
    var arg = val.split("=");
    if (arg.length > 0) {
        if (arg[0] === 'env') {
            var env = require('./env/' + arg[1] + '.properties');
            module.exports = env;
        }
    }
});
  • Exemple de fichier de propriétés development.properties :
# Dev properties
[main]
# Application port to run the node server
app.port=8080

[database]
# Database connection to mysql
mysql.host=localhost
mysql.port=2500
...
  • Exemple d'utilisation des propriétés chargées:
var enviorment = require('./environments');
var PropertiesReader = require('properties-reader');
var properties = new PropertiesReader(enviorment);
   
var someVal = properties.get('main.app.port');
  • Démarrer le serveur express
npm start env=development

ou

npm start env=production


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow