Circular Dependencies (Modules)
The Problem
Section titled “The Problem”{ "modules": { "ModuleA": ["services/ServiceA.ts"], "ModuleB": ["services/ServiceB.ts"] }}// ServiceA (ModuleA) depends on ServiceB (ModuleB)export class ServiceA implements IServiceA { constructor(private serviceB: IServiceB) {} doSomething(): string { return 'A: ' + this.serviceB.doSomething(); }}
// ServiceB (ModuleB) depends on ServiceA (ModuleA)export class ServiceB implements IServiceB { constructor(private serviceA: IServiceA) {} doSomething(): string { return 'B: ' + this.serviceA.doSomething(); }}The Cycle: ModuleA → ModuleB → ModuleA → impossible to load!
Detection
Section titled “Detection”❌ Error: Circular dependency detected between modules.
Module dependency chain: ModuleA → ModuleB → ModuleA
Detailed circular dependency: ServiceA (ModuleA) → IServiceB (ServiceB in ModuleB) → IServiceA (ServiceA in ModuleA)
Modules involved in circular dependencies: - ModuleA: services/ServiceA.ts - ModuleB: services/ServiceB.tsHow to Fix
Section titled “How to Fix”Merge modules or extract common dependency:
// ✅ Extract shared serviceclass SharedService { doSomething(): string { return 'shared logic'; }}
// ModuleAclass ServiceA { constructor(private shared: SharedService) {}}
// ModuleBclass ServiceB { constructor(private shared: SharedService) {}}