En realidad, no lo recomendaría para almacenar los valores de configuración como información de conexión de base de datos, contraseñas, tokens de acceso y tal dentro del código de la aplicación real por las siguientes razones:
La codificación rígida de esos valores hace que sea difícil cambiarlos más adelante. Deberá lanzar una nueva versión de la aplicación para cambiar esos valores.
Se trata de una infracción de seguridad grave, ya que los datos de configuración de nivel de producción y las contraseñas no se deben almacenar en el código. Es muy fácil filtrar esta información confidencial.
El mejor enfoque sería externalizar esta información y pasarla a su aplicación durante la ejecución. Esto normalmente se hace por medio de variables de entorno. Solo necesita definir una variable de entorno única para cada paz de datos que debe poder cambiarse entre diferentes entornos.
Por ejemplo: DB_HOST
, DB_USER
, DB_PASSWORD
.Posteriormente, se podría pasar esos valores a los que la aplicación en la producción de esta manera:
$ NODE_ENV=production DB_HOST=1.2.3.4 DB_USER=someusername DB_PASSWORD=somerandompassword /bin/node app.js
En realidad, estos valores podrían ser encriptados y se añaden a la base de código y luego descifrados durante el despliegue. Sin embargo, asegúrese de que la clave de descifrado esté almacenada de forma segura en el sistema de implementación o que el ingeniero de versiones la proporcione de forma interactiva. Shippable allows to do this fuera de la caja.
En el entorno de desarrollo se vuelve más simple, porque puede usar dotenv
module muy conveniente. Basta con crear un archivo .env
en el directorio raíz de su proyecto y añadir todas las variables a ella:
DB_HOST=1.2.3.4
DB_USER=someusername
DB_PASSWORD=somerandompassword
Pero, asegúrese de excluirlo de ustedes VCS, ya que cada desarrollador probablemente querría tener configuración personal. Puede crear un archivo .env.dist
para contener la configuración predeterminada, que luego se podría usar como plantilla: cp .env.dist .env
.
Además, he implementado un módulo reutilizable, que permite detectar automáticamente el medio ambiente mediante el análisis de los dos argumentos de la CLI y la variable NODE_ENV. Esto podría ser útil en su máquina de desarrollo, porque puede cambiar fácilmente el entorno pasando un argumento CLI a su programa Node.js como este: $ node app.js --prod
. También es bueno usarlo con Gulp: $ gulp build --prod
.
Por favor, ver más detalles y casos de uso en el detect-environment
's page.
¿Su aplicación node.js es un servidor HTTP? –
Sí lo es. También tiene una conexión con mongodb. – guiomie