Tengo muchos valores dentro de un archivo .env.local.
NEXT_PUBLIC_GA_ID = myvariablevalueEscribí una función que verifica si estos están presentes:
export const getEnvValue = (name: string, required = true) => { const value = process.env[name]; console.log('process.env: ', process.env); console.log('process.env.NEXT_PUBLIC_GA_ID: ', process.env['NEXT_PUBLIC_GA_ID']); console.log('name: ', name); console.log('process.env[name]: ', process.env[name]); if (!value && required) { throw new Error(`Missing env variable ${name}`); } return value; }; Llamo a esta función dentro de un gancho useEffect en mi componente:
useEffect(() => { // Setup GA const GAVar = getEnvValue('NEXT_PUBLIC_GA_ID'); if (GAVar) { ReactGA.initialize(GAVar); } }, []);Esta consola registra lo siguiente:
process.env: {} envHelpers.ts?280e:4 process.env.NEXT_PUBLIC_GA_ID: myvariablevalue envHelpers.ts?280e:5 name: NEXT_PUBLIC_GA_ID envHelpers.ts?280e:6 process.env[name]: undefined envHelpers.ts?280e:9 Uncaught Error: Missing env variable NEXT_PUBLIC_GA_ID¿Cómo es que la variable está allí cuando se hace referencia correctamente, pero falta cuando paso la clave de objeto como una cadena?
Los usos de process.env.* se reemplazarán con los valores en el momento de la compilación, por lo que no podrá cargar variables dinámicas de entorno. Consulte Carga de variables de entorno
Nota: Para mantener seguros los secretos exclusivos del servidor, Next.js reemplaza
process.env.*con los valores correctos en el momento de la compilación. Esto significa que process.env no es un objeto JavaScript estándar, por lo que no puede usar la desestructuración de objetos. Las variables de entorno deben referenciarse como, por ejemplo,process.env.PUBLISHABLE_KEY, noconst { PUBLISHABLE_KEY } = process.env.