Circular Dependencies
JavaScript 🔴 SeniorDefinition
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.