Node.js
Environnement
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