Configuración de variables de entorno en NestJS
Clase 9 de 35 • Curso de Backend con NestJS
Resumen
Configurar de manera segura y eficiente las variables de entorno es esencial para cualquier aplicación moderna. Con un enfoque directo y claro, aquí aprenderás cómo manejar variables de entorno en NestJS, aprovechar su configuración global y evitar riesgos de seguridad en tus proyectos.
¿Cómo afectan los diferentes ambientes a la configuración de variables de entorno?
Cada ambiente tiene requisitos distintos. El entorno de producción usa llaves de acceso reales y completas. El entorno de desarrollo emplea accesos limitados y opciones como debug, lo que reduce riesgos y facilita pruebas controladas. Es importante nunca compartir variables sensibles en el código: cada ambiente requiere su propio archivo de configuración.
¿Qué pasos seguir para configurar variables de entorno en NestJS?
- Instala el paquete nestjs/config con el gestor de paquetes.
- Declara el uso de ConfigModule como global en tu módulo principal (app.module.ts) para que cualquier componente pueda acceder a las variables sin restricciones especiales.
- Utiliza archivos como
.env
para definir las variables, y.gitignore
para asegurarte de que no sean rastreadas en el repositorio por motivos de seguridad. - Incluye también un archivo
.env.example
en el repositorio para que cada desarrollador sepa qué variables necesita definir en su entorno local. - Recuerda: los archivos
.env
y.env.local
nunca deben compartirse. Solo el archivo de ejemplo sirve de guía.
¿Cómo acceder y tipar correctamente las variables de entorno?
- Inyecta ConfigService en tus controladores o servicios usando la inyección de dependencias, igual que harías con cualquier servicio personalizado.
- Obtén las variables con el método
get
del servicio:
const valor = this.configService.get<string>('NOMBRE_VARIABLE');
- Usa el tipado adecuado, como
, para decirle a TypeScript el tipo esperado y evitar problemas en tiempo de ejecución. - Implementa un archivo modelo (por ejemplo,
env.model.ts
) con una interfaz que describa los nombres y tipos de las variables. Así, si escribes mal el nombre de una variable, obtendrás una alerta de inmediato. - Activa la inferencia de tipos con la bandera
isGlobal
einfer: true
al configurar el módulo. Así toda la app hereda esa validación.
¿Cuáles son las mejores prácticas al manejar archivos .env y variables sensibles?
- Nunca incluyas archivos .env con valores reales en el repositorio.
- Sube solo el archivo
.env.example
con los nombres de las variables, pero deja los valores en blanco. - Define las variables de entorno por privado y asigna los valores necesarios solo en desarrollo o producción.
- Si un valor es requerido y no está definido, el sistema regresa
undefined
, así que valida siempre la existencia antes de usar la variable. - Si necesitas agregar otra variable, adáptala en el modelo de tu archivo
env.model.ts
y en el archivo example.
¿Cómo aprovechar la inyección de dependencias y el patrón singleton?
- Puedes inyectar varios servicios en los controladores; cada servicio se comparte en una sola instancia (singleton), facilitando el acceso global y coherente a los datos.
- Usa endpoints RESTful claros: nómbralos según lo que representan y devuelve, evitando endpoints genéricos como
/mytest
que no siguen las convenciones REST. - El acceso centralizado a variables de entorno permite usarlas en cualquier componente, controlador o servicio.
¿Tienes más dudas sobre cómo integrar variables de entorno en tus proyectos con NestJS? ¡Cuéntanos tu experiencia y comparte cualquier truco que te funcione!