Kri*_*ram 8 environment-variables node.js nestjs
NestJS 允许我们通过 ConfigModule 读取 .env 文件,我可以使用如下代码在我的模块中轻松完成此操作
@Module({
imports: [ConfigModule.forRoot()],
providers: [
NVFullNameSearchService,
NVPartialNameSearchService,
NVPersistService,
],
controllers: [NvController],
})
Run Code Online (Sandbox Code Playgroud)
但上面的代码更多的是在模块内处理,如何从 main.ts 中的 .env 文件中读取内容。假设我需要为 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();
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在这种情况下应用程序尚未创建。我应该直接使用dotenv吗?正如您在任何企业环境中所期望的那样,我为 DEV、QA、UAT 和 Production 提供了不同的 env 文件。实现它的最简单/正确的方法是什么?
Kri*_*ram 17
感谢大家的支持。这是我修复它的方法
**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 {}
Run Code Online (Sandbox Code Playgroud)
现在模块已经有了正确的设置,唯一剩下的就是以一种更非常规但有记录的方式从 main.ts 调用它
**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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17316 次 |
| 最近记录: |