Circular Dependency

NestJS 🟡 Mid

Définition

Situation ou deux providers ou modules dépendent mutuellement l'un de l'autre, causant une erreur de résolution. Se résout avec forwardRef.

Analogie

Comme deux personnes bloquées a une porte, chacune attendant que l'autre passe en premier.

Exemple de code

// Module A importe B, B importe A
@Module({
  imports: [forwardRef(() => ModuleB)],
})
export class ModuleA {}

Cas d'usage

Résoudre temporairement une dépendance circulaire tout en planifiant un refactoring pour l'éliminer.

Anti-pattern

Accepter les dépendances circulaires comme normales au lieu de repenser l'architecture.
#core#interview

En entretien

  1. Explique-moi ce qu'est une dépendance circulaire entre deux modules NestJS, et comment tu la détectes.

    C'est quand deux providers ou modules dépendent l'un de l'autre en même temps, ce qui empêche NestJS de résoudre l'ordre d'injection - un peu comme deux personnes bloquées à une porte, chacune attendant que l'autre passe en premier. On la résout avec forwardRef, qui retarde la résolution de la référence.

  2. Si tu vois une dépendance circulaire dans une PR, tu la laisses passer avec un forwardRef ou tu bloques ?

    Je l'accepte temporairement avec forwardRef pour débloquer, mais je pose un ticket de refactoring, parce qu'accepter les dépendances circulaires comme normales sans repenser l'architecture est justement l'anti-pattern à éviter.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre