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