【发布时间】:2019-05-12 10:41:20
【问题描述】:
official nest docs on modules 解释了全局模块和动态模块。我想知道是否可以将这两种模式结合起来?
我的用例如下:我有一个动态配置模块:
export class ConfigModule {
static forRoot(baseConfigPath: string): DynamicModule {
const providers = [{ provide: 'Config', useValue: configFactory(baseConfigPath) }];
return {
module: ConfigModule,
providers,
exports: providers,
};
}
}
这使配置模块能够依赖于传入的基本配置路径。然后我可以在主应用模块中导入模块,如下所示:
@Module({
imports: [ConfigModule.forRoot(path.resolve(__dirname, '../config'))],
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {}
这有点好。但是,我确实有很多其他模块(app 模块的子模块,config 模块的兄弟模块),我还希望动态配置模块的同一个实例是可注入的。如果我能以某种方式将动态 ConfigModule 标记为全局,那就太好了 - 还是有其他方法?
我已经尝试使用@Global 将ConfigModule 设为全局,但这不起作用 - 这是一个基于nest new 创建的嵌套启动器的超级最小简化示例存储库:https://github.com/DeX3/nest-di-playground
【问题讨论】:
-
你试过用
@Global将ConfigModule设为全局吗? -
是的,我确实尝试过,但无法成功。我已经更新了我的问题以包含一个最小的示例。
标签: typescript nestjs