导出动态模块的正确方法

Ole*_*ich 6 node.js typescript nestjs

我有一个 NestJS 应用程序,它将CoreModule核心服务的集合导出到所有其他模块。在核心模块中,我有动态模块寄存器HttpModule。我不会两次注册该模块以进行导入和导出,因此我执行以下操作:

const httpModule = HttpModule.register({
    timeout: Configuration.requestTimeoutMilliseconds
});

@Module({
    imports: [httpModule],
    providers: [
        ...
    ],
    exports: [
        httpModule,
        ...
    ]
})
export class CoreModule { }
Run Code Online (Sandbox Code Playgroud)

当我启动我的应用程序时,我在InstanceLoader日志中看到HttpModule依赖项注册了两次:

在此输入图像描述

一般导出动态模块的正确方法是什么?

Dan*_*rov 2

你可以这样做。

@Module({
  imports: [
    HttpModule.register({
      timeout: Configuration.requestTimeoutMilliseconds,
    }),
  ],
  providers: [],
  exports: [HttpModule],
})
export class CoreModule {}
Run Code Online (Sandbox Code Playgroud)

对我来说很有意义,因为当您想要实现动态模块时,您需要返回模块类作为模块字段中的模块标识符。

文档中的此页面上有声明动态模块的示例https://docs.nestjs.com/fundamentals/dynamic-modules#module-configuration