Skip to content
On this page

NestFactory

NestFactory 是 NestJS 框架中用于创建 Nest 应用实例的核心类。它提供了一组静态方法,用于引导和启动应用程序。通过 NestFactory,你可以创建 HTTP 服务、微服务以及独立的应用实例。

主要方法

1. create

  • 创建一个 Nest 应用实例,默认使用 Express 作为底层 HTTP 服务器。
  • 语法:
    typescript
    static async create<T>(module: Type<T>, options?: NestApplicationOptions): Promise<INestApplication>;
    
    1

2. createMicroservice

  • 创建一个微服务实例。
  • 语法:
    typescript
    static createMicroservice<T>(module: Type<T>, options: MicroserviceOptions): INestMicroservice;
    
    1

3. createApplicationContext

  • 创建一个独立的应用上下文,通常用于测试或执行不需要完整 HTTP 服务的任务。
  • 语法:
    typescript
    static async createApplicationContext<T>(module: Type<T>, options?: NestApplicationContextOptions): Promise<INestApplicationContext>;
    
    
    1
    2

创建一个 HTTP 服务

通过 NestFactory.create 方法可以创建一个 HTTP 服务。下面是一个简单的示例:

typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
  console.log('Application is running on: http://localhost:3000');
}
bootstrap();

1
2
3
4
5
6
7
8
9
10

在这个示例中:

  • NestFactory.create(AppModule) 创建了一个 Nest 应用实例。
  • app.listen(3000) 启动应用,监听 3000 端口。

创建一个微服务

通过 NestFactory.createMicroservice 方法可以创建一个微服务。下面是一个简单的示例:

typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { Transport, MicroserviceOptions } from '@nestjs/microservices';

async function bootstrap() {
  const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {
    transport: Transport.TCP,
  });
  app.listen(() => console.log('Microservice is listening'));
}
bootstrap();

1
2
3
4
5
6
7
8
9
10
11
12

在这个示例中:

  • NestFactory.createMicroservice 创建了一个 TCP 传输的微服务实例。
  • app.listen 启动微服务。

创建一个独立的应用上下文

通过 NestFactory.createApplicationContext 方法可以创建一个独立的应用上下文,适用于运行任务或进行测试。下面是一个简单的示例:

typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const appContext = await NestFactory.createApplicationContext(AppModule);
  const appService = appContext.get(AppService);
  appService.runTask();
  await appContext.close();
}
bootstrap();

1
2
3
4
5
6
7
8
9
10
11

在这个示例中:

  • NestFactory.createApplicationContext(AppModule) 创建了一个应用上下文实例。
  • 通过 appContext.get(AppService) 获取服务实例并运行任务。

常见选项

  • logger

    • 自定义日志记录器。
    • 语法:
      typescript
      const app = await NestFactory.create(AppModule, {
        logger: ['error', 'warn'],
      });
      
      
      1
      2
      3
      4
  • bodyParser

    • 配置 bodyParser 中间件选项。
    • 语法:
      typescript
      const app = await NestFactory.create(AppModule, {
        bodyParser: false, // 禁用 bodyParser
      });
      
      
      1
      2
      3
      4

总结

NestFactory 是创建和启动 NestJS 应用的核心工具。它提供了多种方法,适用于不同类型的应用程序,包括 HTTP 服务、微服务和独立的应用上下文。通过理解和使用 NestFactory,开发者可以高效地引导和管理 NestJS 应用程序。

沪ICP备20006251号-1