Nestjs 为 Nx Monorepo 中的应用程序定制配置服务

问题描述 投票:0回答:1

我正在尝试为我的 nx monorepo 中的每个 Nestjs 应用程序创建自定义配置服务。 到目前为止,这是我想出的解决方案。

每个自定义配置服务将注入默认的nest configService,向nestjs configService传递一个泛型以指示该应用程序的配置列表。并将每个配置变量的检索包装在 getter 方法中。 此类服务的示例如下所示:

@Injectable()
export class AppConfigService {
  constructor(private readonly configService: ConfigService<envVars>) {}

  get nodeEnv(): Environment | undefined {
    return this.configService.get('NODE_ENV');
  }
}

每个应用程序的主配置模块将设置为全局模块,并将使用别名提供程序,以便在多个应用程序中使用的库可以通过相同的名称访问配置服务,无论使用它们的应用程序如何:

const RootAppConfigModule = ConfigModule.forRoot({
  isGlobal: true,
  validate,
  envFilePath: './.env',
});

@Module({
  imports: [RootAppConfigModule],
  providers: [
    AppConfigService,
    {
      provide: 'AppConfigService',
      useClass: AppConfigService,
    },
  ],
})

每个需要 configService 的服务将注入配置服务令牌。 注入值的类型将是描述该服务所需配置的自定义接口。 该类的构造函数还将断言注入的 configService 上存在配置:

@Injectable()
export class sessionThatUsesConfig {
  constructor(
    @Inject('AppConfigService') configService: configurations,
  ) {
    assert(configService.confgValue);
  }
  
  somethingThatNeedsAConfig() {
    console.log(this.configService.configVal)
  }
}

我遇到的主要问题是注入它的服务无法识别注入的 appConfigService 值。 以前有人做过类似的事情吗?如果是的话,还有其他方法吗?

configuration nestjs
1个回答
0
投票

运行同样的问题,你解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.