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.
-
Instale el módulo de configuración de Nestjs –
npm i --save @nestjs/config
. Se basa en dotenv -
Cree un archivo .env en su carpeta raíz y agregue su key/valor pares por ejemplo
DATABASE_USER=myusername
-
Abra app.module.ts e importe el módulo de configuración
importar ConfigModule desde ‘@nestjs/config’;
-
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(),
-
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.json
por 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.