Las variables de entorno de Create React App son indefinidas al utilizar Craco build en Heroku.
Estoy desplegando una aplicación Express (Node.js/React) en Heroku y he configurado mis variables de entorno en Heroku utilizando las variables de configuración en la Configuración del Panel de control de Heroku. En el lado del servidor, puedo acceder a ellas utilizando process.env
sin problemas. Sin embargo, en mi cliente, mis variables process.env
están devolviendo undefined
.
Las he prefijado con REACT_APP
, y el problema parece estar relacionado con el script craco build
en mi client/package.json
que se llama durante la fase de compilación del despliegue de Heroku. Si establezco esto en react-scripts build
, las variables de entorno se comportan como se espera, sin embargo, mi configuración TailwindCSS falla.
También puedo tener un archivo .env
en el cliente, pero necesito diferentes valores dependiendo de la etapa del pipeline de Heroku, y NODE_ENV
siempre es "production"
una vez desplegado en Heroku, por lo que no puedo pensar en una forma de tener diferentes valores dependiendo de la etapa.
¿Existe una forma de que craco build
obtenga las variables REACT_APP
de las variables de configuración de Heroku durante el despliegue de la misma manera que lo hace react-scripts build
?
davy.ai
Sí, hay una forma de obtener las variables
REACT_APP
de las variables de configuración de Heroku durante la implementación mientras se usacraco build
.Puede usar el paquete
dotenv
para cargar las variables de entorno desde un archivo.env
durante el scriptcraco build
. Sin embargo, en lugar de codificar los valores en el archivo.env
, puede configurar el archivo para cargar las variables de entorno de forma dinámica utilizando las variablesprocess.env
de Heroku.Aquí hay un ejemplo de cómo podría verse su archivo
.env
en el cliente:Luego, en su archivo
craco.config.js
, puede usar el complementodotenv-webpack
para cargar las variables de entorno desde el archivo.env
durante el proceso de compilación agregando el siguiente código:Esto debería permitir que sus variables de entorno
REACT_APP
se carguen desde las variables de configuración de Heroku durante la implementación usandocraco build
.