如何在实例化应用程序之前在 main.ts 中获取 Nestjs configService 实例

问题描述

我的应用实例取决于配置:serviceName 在这种情况下

const serviceName = 'authentication-service'
const servicePrefix = `api/${serviceName}`;
const swaggerPrefix = 'swagger';
...
const app = await nestFactory.create<nestFastifyApplication>(
    AppModule,new FastifyAdapter({
      requestIdLogLabel: serviceName,logger: true,...
    }),{
      // logger: ['log']
      logger: process.env.DEV === '1' ? ['log','debug','error','verbose','warn'] : ['error','warn'],});

NestJs documentation 使用应用实例获取 configService 单例:

const configService = app.get(ConfigService);
const port = configService.get('PORT');

有没有办法在实例化我的应用之前获取 configService 实例?

解决方法

没有。如果确实需要,您可以自己调用 dotenvconfig() 方法并填充 process.env,但仅此而已。从技术上讲,如果您真的想要,您可以创建一个 NestFactory.createApplicationContext() 调用并从那里获取 ConfigService,关闭上下文并使用标准 NestFactory.create 启动应用程序,但这最终会DI 分辨率两次,这将是一个非常缓慢的启动

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...