@Module()

Declares a module that organizes controllers, providers, imports, and exports.

Since NestJS 10/11 Spec ↗

Syntax

@Module(metadata: ModuleMetadata)

Parameters

NameTypeRequiredDescription
metadata ModuleMetadata No Object with imports, controllers, providers, and exports arrays.

Returns

ClassDecorator — A decorator applied to the module class.

Examples

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
  exports: [CatsService],
})
export class CatsModule {}
import { Module } from '@nestjs/common';
import { CatsModule } from './cats/cats.module';

@Module({
  imports: [CatsModule],
})
export class AppModule {}

Notes

Modules group related capabilities. Providers listed in `providers` are private to the module unless added to `exports`. Importing a module makes its exported providers available for injection in the importing module.