Variables de Entorno NodeJS: estructura los diferentes valores de sus variables
Si hace poco estuvimos hablando de la importancia de las variables de entorno Node JS, ahora abordaremos el tema desde un punto de vista más práctico, mostrando una forma de estructurar las diferentes valores de las variables de entorno, para que, de una única vez, podamos cambiarlas dependiendo del estado en el que nos encontremos (producción, desarrollo,test, etc.), siendo un conocimiento de gran utilidad en la tecnología de servidores Cloud.
[banneroferta product=2] Así que intentaremos notificar el estado de desarrollo sin establecer la lista de variables al ejecutar nuestra aplicación y disponer de nuestras variables de entorno en un archivo de texto, lo que nos permitirá cambiarlo de manera cómoda.
De este modo, si queremos usar el conjunto de variables de entorno predeterminado (por ejemplo, en la etapa de desarrollo), no definiríamos ninguna al ejecutar la aplicación:
node group-env.js
Posteriormente, si decidimos ejecutarla con los valores de todas las variables de entorno Node JS necesarias para producción, indicaríamos que estamos en ese otro entorno:
NODE_ENV=production node group-env.js
Variables de entorno en un JSON
En un archivo aislado usamos un literal de objeto Javascript (JSON) para conservar todas nuestras variables de entorno. Así, definiremos diferentes conjuntos de éstas.
{ 'development': { 'SERVERURL': 'https://localhost:3001/', 'PORT': 3001 }, 'production': { 'SERVERURL': 'https://app.arsys.es/', 'PORT': 5000 } }
En el ejemplo, hemos creado un archivo y lo hemos guardado como env.variables.json.
Los conjuntos son development y production, pero se pueden poner tantos de estos como variables necesitemos.
Require de las variables de entorno
En los sitios donde se necesite acceder a las variables lo haremos con require del JSON anterior.
var envJSON = require('./env.variables.json');
envJSON será el objeto encargado de recoger esas variables.
Por último, vamos a especificar qué conjunto de variables vamos a usar, y esto lo hacemos con NODE_ENV, que tendrá un valor, si no se encuentra esa variable, de development.
var node_env = process.env.NODE_ENV || 'development';
Así podemos tomar los valores necesarios del JSON:
var TodasMisVariablesDeEntorno = envJSON[node_env];
Aunque si queremos acceder a una única variable de entorno:
var puerto = envJSON[node_env].PORT;
Especificar un modulo para gestionar variables de entorno Node JS
Siempre y cuando necesitemos realizar el require de un módulo de configuración concreto, podemos optar por definir el acceso a las variables de entorno Node JS en un módulo aparte.
Sería algo así (hemos llamado al archivo config-module.js):
exports.config = function() { var envJSON = require(‘./env.variables.json’); var node_env = process.env.NODE_ENV || ‘development’; return envJSON[node_env]; }
A continuación, hacemos el require del módulo anterior.
var entorno = require('./config-module.js').config()
Con esto, ya hemos realizado un primer acercamiento al tratamiento de variables de entorno para vuestras aplicaciones NodeJS.