Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

391
Views
Usar datos del archivo .env en main.ts - NestJS

NestJS nos permite leer el archivo .env a través de ConfigModule y puedo hacerlo fácilmente en mis módulos con un código como el siguiente

 @Module({ imports: [ConfigModule.forRoot()], providers: [ NVFullNameSearchService, NVPartialNameSearchService, NVPersistService, ], controllers: [NvController], })

Pero el código anterior es más para tratar dentro de los módulos, ¿cómo puedo leer el contenido del archivo .env en main.ts? ¿Diga que necesito configurar el puerto y el host para mi servicio Redis?

 const microserviceOptions = { name: 'plscorecard', transport: Transport.REDIS, options: { url: 'redis://localhost:6379', }, }; async function bootstrap() { const app = await NestFactory.createMicroservice( NVModule, microserviceOptions, ); app.listen(() => { logger.log('NameVerification Redis microservice is listening ... '); }); } bootstrap();

Como puede ver, la aplicación aún no se ha creado en este caso. ¿Debo usar directamente dotenv? Como era de esperar en cualquier entorno empresarial, tengo diferentes archivos env para DEV, QA, UAT y Production. ¿Cuál es la forma más fácil/correcta de lograrlo?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Gracias por todo tu apoyo. Así es como lo arreglé

 **app.module.ts** import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ConfigModule } from '@nestjs/config'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, envFilePath: `config/${process.env.NODE_ENV}.env`, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}

Ahora que el módulo tiene la configuración correcta, lo único que queda es invocarlo desde main.ts de una manera menos convencional pero documentada.

 **main.ts** import { Logger } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { Transport } from '@nestjs/microservices'; import { AppModule } from './app.module'; import { ConfigService } from '@nestjs/config'; async function bootstrap() { const logger = new Logger('main'); const app = await NestFactory.create(AppModule); const configService = app.get(ConfigService); const REDIS_HOST = configService.get<string>('REDIS_HOST'); const REDIS_PORT = configService.get<number>('REDIS_PORT'); const microserviceOptions = { transport: Transport.REDIS, options: { url: `redis://${REDIS_HOST}:${REDIS_PORT}`, }, }; app.connectMicroservice(microserviceOptions); const PORT = configService.get<number>('PORT'); const environment = configService.get<string>('NODE_ENV'); const title = configService.get<string>('ENVIRONMENT_TITLE'); await app.listen(PORT); logger.log( `${environment}, Microservice ready to receive Redis messages in PORT - ${PORT}\n Environment - ${title}`, ); } bootstrap();
over 4 years ago · Santiago Trujillo Report

0

Puede evitar usar dotenv usando su servicio de configuración en su main.ts con el método app.get() .

 import { ConfigurationService } from './core/configuration/configuration.service'; async function bootstrap() { const configurationService = app.get(ConfigurationService); await app.listen(configurationService.expressPort); }

Para obtener más información, lea la documentación sobre el uso de la configuración en su main.ts

over 4 years ago · Santiago Trujillo Report

0

La solución más fácil es simplemente importar dotenv e inicializarlo inmediatamente después. Es particularmente importante que estas sean las dos primeras cosas que haga en sus main.ts, así:

 import * as dotenv from 'dotenv'; dotenv.config(); import ... ... async function bootstrap(){ ... }

No se necesita ningún módulo de configuración para acceder a las variables en un archivo .env después de hacer eso.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!