Cómo gestionar las variables de entorno con NodeJS


Share on FacebookTweet about this on TwitterShare on LinkedInEmail this to someoneShare on Google+

Si hace poco estuvimos hablando de la importancia de las variables de entorno en NodeJS, 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.).

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 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": "http://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

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 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.


Share on FacebookTweet about this on TwitterShare on LinkedInEmail this to someoneShare on Google+
0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *