引导微服务时获取 ConfigService 的正确方法

Kev*_*lin 4 node.js microservices nestjs

我想知道在引导我的微服务期间是否以正确的方式获取 ConfigService。

有没有办法使用 NestFactory.createMicroservice() 来做到这一点?

async function bootstrap() {
  const app = await NestFactory.create(CoreModule, {
    logger: new MyLogger(),
  });
  const configService: ConfigService = app.get(ConfigService);
  app.connectMicroservice({
    transport: Transport.TCP,
    options: {
      port: configService.PORT,
    },
  });
  await app.startAllMicroservicesAsync();
}
Run Code Online (Sandbox Code Playgroud)

Jay*_*iel 8

是的,有一种方法可以在 NestFactory 中做到这一点,您已经以正确的方式做到了!如果您想要另一个示例,这是我的引导函数:

async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    logger: new MyLogger()
  });
  const config = app.get<ConfigService>(ConfigService);
  const port = config.get('PORT');
  configure(app, config);
  await app.listen(port);
  scribe.info(
    `Listening at http://localhost:${port}/${config.get('GLOBAL_PREFIX')}`
  );
}
Run Code Online (Sandbox Code Playgroud)

MyLoggerNest 默认记录器的自定义实现在哪里,并且configure(app, config)大量应用程序配置在单独的文件中完成以保持bootstrap功能精简且易于维护。当然,在投入生产之前,“正在收听...”也需要更改,但这个应用程序对我来说仍在开发中。

我唯一建议你的就是改变

const configService: ConfigService = app.get(ConfigService);
Run Code Online (Sandbox Code Playgroud)

const configService = app.get<ConfigService>(ConfigService);
Run Code Online (Sandbox Code Playgroud)

使用泛型 forapp.get()为您提供类型信息。