¿Hay alguna manera de establecer variables env fuera de un directorio de páginas en NextJS? Tengo una función de utilidad que proporciona la ruta API base en un solo lugar. Sin embargo, dado que esta es una función útil, no está definida en una página. Me gustaría evitar tener que crear un getStaticProps en cada página para obtener mis variables env privadas si es posible.
¿Alguna idea?
export const apiAddress = process.env.NEXT_PUBLIC_CURRENT_ENV === 'PRODUCTION' ? process.env.PROD_API : process.env.DEV_API; ...Tuve un problema similar en el que no podía acceder a mis variables env en la aplicación nextjs.
La solución fue leerlos en next.config.js y pasarlos implícitamente.
Mi ejemplo carga el entorno desde /environments/env.development pero puede usar cualquier ubicación que desee.
Así que mi próximo next.config.js se ve así:
const path = require('path') const { parsed: localEnv } = require('dotenv-safe').config({ allowEmptyValues: false, path: path.resolve(__dirname, `environments/.env.development`), }) const nextConfig = { env: localEnv, } module.exports = nextConfigDebería poder acceder a las variables ENV en su archivo .env como de costumbre:
process.env.YOUR_VARIABLE
Según el entorno, también puede usar una variable ENV predefinida de su paquete.json, que le permite cargar el archivo correcto para su entorno.
En su package.json defina algo. así en la sección de scripts :
"dev:development": "ENV=development node server.js", "dev:staging": "ENV=staging node server.js" ... Luego, tiene acceso a ENV var y puede usarlo directamente para sus propósitos en next.config.js .
Basado en el ejemplo anterior:
path: path.resolve(__dirname, `environments/.env.${process.env.ENV}`),