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.
Défi
Facile- Le projet de départ ajoute
ClockService. Demande-le dansTasksServiceet attribuecreatedAt: this.clock.now()à chaque nouvelle tâche. - Enregistre
ClockServicedansTasksModule. - Envoie
POST /tasksavec un titre. Ensuite, retireClockServicedeproviders, 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
1Les bases de Nest
Classes et méthodesBonjour, NestEnregistrer un contrôleur4Gardes, filtres, intercepteurs
Gardes2Fournisseurs
Entrées du constructeurUn serviceEnregistrement des fournisseursEntraînez-vous par vous-même : Playground Express