Saltar al contenido

NestJS: cómo usar variables .env en el archivo del módulo de la aplicación principal para la conexión de la base de datos

Nuestros mejores investigadores agotaron sus depósitos de café, investigando diariamente por la respuesta, hasta que Estrella encontró el resultado en GitHub así que en este momento la comparte contigo.

Solución:

De los documentos de Nestjs aquí: https://docs.nestjs.com/techniques/configuration

Estos pasos me funcionaron con MySQL y TypeORM.

  1. Instale el módulo de configuración de Nestjs – npm i --save @nestjs/config. Se basa en dotenv

  2. Cree un archivo .env en su carpeta raíz y agregue su key/valor pares por ejemplo DATABASE_USER=myusername

  3. Abra app.module.ts e importe el módulo de configuración

    importar ConfigModule desde ‘@nestjs/config’;

  4. Agregue la siguiente línea a la sección de importaciones de app.module.ts. Lo agregué en la primera importación. Cargará el contenido del archivo .env automáticamente.

    ConfigModule.forRoot(),

  5. Luego puede comenzar a usar las variables env según el proceso habitual.env. en la sección de configuración de la base de datos, por ejemplo

    proceso.env.DATABASE_USER

Para obtener más información sobre la configuración de ConfigModule, consulte el enlace anterior. Puede usar un archivo/ruta personalizado y configurar el módulo visible globalmente.

1. Usando dotenv

npm install dotenv

Agregue algunos guiones a su package.json para establecer en qué entorno se encuentra.

"scripts": 
  ...
  "start:local": "NODE_ENV=local npm run start"
  "start:dev": "NODE_ENV=dev npm run start"

Importar dotenv en main.ts expediente. Asegúrate de hacerlo en la parte superior del archivo.

require('dotenv').config( path: `../$process.env.NODE_ENV.env` );

2. Usando env-cmd

Puedes usar env-cmd paquete npm.

npm install env-cmd

Y agregue algunos comandos para diferentes envs en package.jsonpor ejemplo:

"scripts": 
  ...
  "start:local": "env-cmd -f local.env npm run start"
  "start:dev": "env-cmd -f dev.env npm run start"

...

Ahora puede usar las variables env, por ejemplo:

MongooseModule.forRoot(`mongodb+srv://$process.env.DB_USER:$process.env.DB_PASS@myhost.net?retryWrites=true&w=majority&db=dbname`,  useNewUrlParser: true, dbName: 'dbname' )

process.env.MONGO_CONNECTION_STRING

Necesitas usar el MongooseModule.forRootAsync(() => ...) en vez de MongooseModule.forRoot(...)

Esto hace que MongooseModule espere sus dependencias IOC.

Ver: https://docs.nestjs.com/techniques/mongodb#async-configuration

Si entiendes que te ha sido útil nuestro artículo, sería de mucha ayuda si lo compartieras con más desarrolladores así contrubuyes a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *