Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda