Saltar al contenido

Variables de entorno de Node JS e implementación de Heroku

Sé libre de divulgar nuestros post y códigos en tus redes sociales, ayúdanos a aumentar esta comunidad.

Solución:

No envíe su .env a git (es decir, debería estar en su .gitignore).

Usted define env vars en Heroku a través de su tablero de Heroku o con heroku config:set, por ejemplo

heroku config:set CONVERSATION_USERNAME=Alex

Consulte aquí para obtener más información.

Experimenté el mismo problema con una configuración local de NodeJS y variables de entorno y una implementación en Heroku.

Mi solución fue crear un archivo de configuración que manejaría ambas situaciones y me daría un enfoque ordenado y automatizado en mi proyecto.

Mi servidor NodeJS se ejecuta usando babel-nodepor lo que mi archivo de configuración está escrito en ES6, es posible que deba convertirlo para sus propias necesidades.

Si tomamos un archivo .env de ejemplo:

NODE_ENV=development
API_ENDPOINT=http://localhost:7000
SOMETHING_ELSE=some-text

Y mi config.js en la raíz de la aplicación NodeJS:

import dotenv from 'dotenv';

const result = dotenv.config();
const envs = result.parsed;

module.exports = envs;

Puedes ver en mi código, que uso DotEnv y creo un envs variable: let envs. Localmente uso DotEnv para analizar mi archivo .env y pasarlo a mi aplicación como un objeto.

Esto significa que puedo importar mis variables desde mi .env en mi aplicación fácilmente:

import  NODE_ENV  from './config';

Heroku

En Heroku, establece sus variables de entorno en la página de configuración del proyecto en el panel de control de Heroku. Entonces, para evitar comprometer su .env como vars fijos en su repositorio (lo que nunca debe hacer), puede acceder a la process.env variable global en el mismo archivo de configuración.

Vos tambien config.js archivo se convierte en:

import dotenv from 'dotenv';
import _ from 'lodash';

const result = dotenv.config();

let envs;

if (!('error' in result)) 
  envs = result.parsed;
 else 
  envs = ;
  _.each(process.env, (value, key) => envs[key] = value);


module.exports = envs;

Como ya tenía lodash disponible en mi proyecto, lo usé para manejar el bucle a través del process.env variable.

Nota: Esto hace que todas las variables de entorno en su banco de pruebas estén disponibles, no solo las variables que ha configurado en el panel de control de Heroku. Usted puede decidir que quiere prefix sus env y filtre los process.env bucle solo a los vars que desea exponer a su aplicación.

Como puede ver en mi nuevo archivo de configuración, si no hay ningún error cuando se ejecuta DotEnv, entonces podemos suponer que existe un archivo .env y usar los vars de eso y configurarlos como lo estábamos haciendo antes.

Perosi hay un error, entonces hacemos la suposición de que no hay un .env archivo, y vuelva a comprobar process.env Luego establecemos envs var para ser un objeto envs = ; y luego establecer cada variable que encontramos en process.env como un key par de valores Luego exportar envs como normal.

Esto hace que las variables env de Heroku estén disponibles en su aplicación, sin necesidad de cambiar su lógica en toda su aplicación.

Espero que esto ayude a cualquiera que tenga el mismo problema.

Sección de Reseñas y Valoraciones

Te invitamos a ayudar nuestro cometido fijando un comentario y valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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