Node.js
Ambiente
Buscar..
Accediendo a las variables del entorno.
La propiedad process.env
devuelve un objeto que contiene el entorno de usuario.
Devuelve un objeto como este:
{
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 configura la variable de entorno FOO
en foobar
, será accesible con:
process.env.FOO // 'foobar'
Argumentos de la línea de comandos de process.argv
process.argv es una matriz que contiene los argumentos de la línea de comandos. El primer elemento será node
, el segundo elemento será el nombre del archivo JavaScript. Los siguientes elementos serán los argumentos de línea de comando adicionales.
Ejemplo de código:
Suma de salida de todos los argumentos de la línea de comando
index.js
var sum = 0;
for (i = 2; i < process.argv.length; i++) {
sum += Number(process.argv[i]);
}
console.log(sum);
Ejemplo de uso:
node index.js 2 5 6 7
La salida será 20
Una breve explicación del código:
Aquí, en el bucle for (i = 2; i < process.argv.length; i++)
bucle comienza con 2 porque los dos primeros elementos de la matriz process.argv siempre son ['path/to/node.exe', 'path/to/js/file', ...]
Conversión a número Number(process.argv[i])
porque los elementos de la matriz process.argv siempre son cadenas
Uso de diferentes propiedades / configuración para diferentes entornos como dev, qa, puesta en escena, etc.
Las aplicaciones a gran escala a menudo necesitan propiedades diferentes cuando se ejecutan en diferentes entornos. podemos lograrlo pasando argumentos a la aplicación NodeJs y usando el mismo argumento en el proceso del nodo para cargar un archivo de propiedades del entorno específico.
Supongamos que tenemos dos archivos de propiedades para diferentes entornos.
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" } }
El siguiente código en la aplicación exportará el archivo de propiedad respectivo que queremos usar.
Supongamos que el código está en 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;
}
}
});
Damos argumentos a la aplicación como sigue.
node app.js env=dev
Si estamos usando un administrador de procesos como para siempre, es tan simple como
forever start app.js env=dev
Cómo utilizar el archivo de configuración
var env= require("environment.js");
Cargando las propiedades del entorno desde un "archivo de propiedades"
- Instalar el lector de propiedades:
npm install properties-reader --save
- Crea un directorio env para almacenar tus archivos de propiedades:
mkdir env
- Crear ambientes.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;
}
}
});
- Ejemplo de archivo de propiedades 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
...
- Ejemplo de uso de las propiedades cargadas:
var enviorment = require('./environments');
var PropertiesReader = require('properties-reader');
var properties = new PropertiesReader(enviorment);
var someVal = properties.get('main.app.port');
- Iniciando el servidor express
npm start env=development
o
npm start env=production