Menu
CoddyTech

Enregistrement des fournisseurs

Fait partie de la section TypeScript et NestJS du Journey Node.js de Coddy. Leçon 10 sur 24.

Nest ne crée que les classes qu’un module répertorie dans providers. Un fournisseur peut dépendre d’un autre fournisseur, et chacun d’eux doit être enregistré.

@Injectable()
export class OrdersService {
    constructor(private readonly mailer: MailerService) {}
}

Si MailerService ne figure pas dans les providers du module, l’application ne démarre pas, et Nest indique exactement ce qu’il n’a pas pu trouver :

Nest can't resolve dependencies of the OrdersService (?).
Please make sure that the argument MailerService at index [0]
is available in the OrdersModule module.

Le ? indique l’argument de constructeur manquant, et le message nomme la classe et le module à corriger.

challenge icon

Défi

Facile
  • Le projet de départ ajoute ClockService. Demande-le dans TasksService et attribue createdAt: this.clock.now() à chaque nouvelle tâche.
  • Enregistre ClockService dans TasksModule.
  • Envoie POST /tasks avec un titre. Ensuite, retire ClockService de providers, appuie sur « Jouer », lis l’erreur, puis remets-le.

Essayez vous-même

import { Injectable, NotFoundException } from '@nestjs/common';

export interface Task {
    id: number;
    title: string;
    done: boolean;
    createdAt?: string;
}

@Injectable()
export class TasksService {
    private tasks: Task[] = [
        { id: 1, title: 'Write the README', done: true, createdAt: '2026-01-05T09:00:00.000Z' },
        { id: 2, title: 'Fix the login bug', done: false, createdAt: '2026-01-06T14:30:00.000Z' },
        { id: 3, title: 'Plan the sprint', done: false, createdAt: '2026-01-07T08:15:00.000Z' },
    ];

    findAll(done?: string): Task[] {
        if (done === undefined) {
            return this.tasks;
        }
        return this.tasks.filter((task) => task.done === (done === 'true'));
    }

    findOne(id: number): Task {
        const task = this.tasks.find((task) => task.id === id);
        if (!task) {
            throw new NotFoundException(`Task ${id} not found`);
        }
        return task;
    }

    create(title: string): Task {
        const id = Math.max(0, ...this.tasks.map((task) => task.id)) + 1;
        const task = { id, title, done: false };
        this.tasks.push(task);
        return task;
    }

    remove(id: number): void {
        this.findOne(id);
        this.tasks = this.tasks.filter((task) => task.id !== id);
    }
}

Toutes les leçons de TypeScript et NestJS

Entraînez-vous par vous-même : Playground Express