Providers

Injectable classes or values registered in a module and resolved by the IoC container.

Since NestJS 10/11 Spec ↗

Syntax

providers: [ClassProvider | ValueProvider | FactoryProvider | ExistingProvider]

Returns

Provider[] — Entries declared in a module metadata providers array.

Examples

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

@Module({
  providers: [
    CatsService,
    { provide: 'API_KEY', useValue: process.env.API_KEY },
    {
      provide: 'CONNECTION',
      useFactory: () => createConnection(),
    },
  ],
})
export class CatsModule {}

Notes

Providers can be class providers (shorthand), value providers (useValue), factory providers (useFactory with optional inject), or alias providers (useExisting). They are singletons by default within their module scope.