Circular Dependencies

JavaScript 🔴 Senior

Definition

Situation ou le module A importe B et B importe A. En CommonJS, on obtient un export partiel. En ESM, ca fonctionne grace aux live bindings mais peut causer des bugs subtils.

Analogie

Deux personnes qui se tiennent la porte mutuellement : ca fonctionne si l'une passe en premier, mais ca peut devenir un blocage.

Exemple de code

// a.js
import { b } from './b.js';
export const a = 'A' + b;
// b.js
import { a } from './a.js';
export const b = 'B'; // a est undefined ici en CJS!

Cas d'usage

Detecter et casser les cycles avec des outils comme madge ou eslint-plugin-import.

Anti-pattern

Ignorer les circular dependencies : elles causent des undefined mysterieux et du code fragile.
#core#modules#debug