main.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import type { AppConfig } from '@/types';
  2. import process from 'node:process';
  3. import { HttpExceptionFilter } from '@/core/filter';
  4. import { TransformInterceptor } from '@/core/interceptor';
  5. import { ParamsValidationPipe } from '@/core/pipe';
  6. import { type LogLevel } from '@nestjs/common';
  7. import { ConfigService } from '@nestjs/config';
  8. import { NestFactory, Reflector } from '@nestjs/core';
  9. import { AppModule } from './app.module';
  10. import { JwtAuthGuard } from './core/guard';
  11. async function bootstrap() {
  12. const debug: LogLevel[] = process.env.DEBUG ? ['debug'] : [];
  13. const loggerLevel: LogLevel[] = ['log', 'error', 'warn', ...debug];
  14. const app = await NestFactory.create(AppModule, {
  15. cors: true,
  16. logger: loggerLevel,
  17. });
  18. // 获取 ConfigService 实例
  19. const configService = app.get(ConfigService);
  20. // 使用 ConfigService 获取配置值
  21. const port = configService.get<AppConfig['port']>('port') || 3000;
  22. const apiPrefix = configService.get<AppConfig['apiPrefix']>('apiPrefix');
  23. // 全局注册拦截器
  24. app.useGlobalInterceptors(new TransformInterceptor());
  25. const reflector = app.get(Reflector);
  26. app.useGlobalGuards(new JwtAuthGuard(reflector));
  27. // 全局注册错误的过滤器
  28. app.useGlobalFilters(new HttpExceptionFilter());
  29. // 设置全局接口数据校验
  30. app.useGlobalPipes(new ParamsValidationPipe());
  31. app.setGlobalPrefix(apiPrefix);
  32. await app.listen(port);
  33. console.log(
  34. `Application is running on: http://localhost:${port}${apiPrefix}`,
  35. );
  36. }
  37. bootstrap();