import { Global, Logger, Module, ValidationPipe } from "@nestjs/common"; import { APP_PIPE } from "@nestjs/core"; import { ConfigModule } from "./common/config/config.module"; import { database } from "./config/database.config"; import { Configure } from "./modules/config/configure"; import { CoreModule } from "./modules/core/core.module"; import { DatabaseModule } from "./modules/database/database.module"; import { FileMOdule } from "./modules/file/file.module"; import { UserModule } from "./modules/user/user.module"; import { EventsGateway } from "./websocket/events.gateway"; // 当providers 为空时,就会从di容器从import的模块中查找->其他模块需要两个部分一个是providers,一个是exports,providers是用来提供实例的,exports是用来导出模块的 // 第二种直接在当前providers中导入其他模块的providers,然后在当前模块的providers中导入其他模块的exports,这样就可以实现模块间的依赖注入 @Global() @Module({}) export class AppModule { static forRoot(configure: Configure) { return { module: AppModule, imports: [ DatabaseModule.forRoot(database(configure)), UserModule.forRoot(configure), ConfigModule.forRoot(), CoreModule.forRoot(configure), FileMOdule.forRoot(), ], controllers: [], exports: [ { module: Logger, global: true, }, ], providers: [ Logger, { provide: APP_PIPE, useValue: new ValidationPipe({ transform: true, whitelist: true }), }, EventsGateway, ], global: true, }; } }