import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { APP_GUARD, APP_INTERCEPTOR, APP_FILTER } from '@nestjs/core'; import { PrismaModule } from './prisma/prisma.module'; import { AuthModule } from './auth/auth.module'; import { UsersModule } from './users/users.module'; import { RolesModule } from './roles/roles.module'; import { PermissionsModule } from './permissions/permissions.module'; import { MenusModule } from './menus/menus.module'; import { DictModule } from './dict/dict.module'; import { ConfigModule as SystemConfigModule } from './config/config.module'; import { LogsModule } from './logs/logs.module'; import { TenantsModule } from './tenants/tenants.module'; import { JwtAuthGuard } from './auth/guards/jwt-auth.guard'; import { RolesGuard } from './auth/guards/roles.guard'; import { TransformInterceptor } from './common/interceptors/transform.interceptor'; import { LoggingInterceptor } from './common/interceptors/logging.interceptor'; import { HttpExceptionFilter } from './common/filters/http-exception.filter'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, // envFilePath 指定配置文件路径 // 如果需要后备文件,可以取消下面的注释,但要注意 .env 会覆盖 .development.env 的值 envFilePath: [ '.env', `.env.${process.env.NODE_ENV || 'development'}`, // 优先加载 ], }), PrismaModule, AuthModule, UsersModule, RolesModule, PermissionsModule, MenusModule, DictModule, SystemConfigModule, LogsModule, TenantsModule, ], providers: [ { provide: APP_GUARD, useClass: JwtAuthGuard, }, { provide: APP_GUARD, useClass: RolesGuard, }, { provide: APP_INTERCEPTOR, useClass: LoggingInterceptor, // 日志拦截器,先执行 }, { provide: APP_INTERCEPTOR, useClass: TransformInterceptor, // 响应转换拦截器 }, { provide: APP_FILTER, useClass: HttpExceptionFilter, }, ], }) export class AppModule {}