闽公网安备 35020302035485号
// user.module.ts
@Module({
imports: [AuthModule],
providers: [UserService],
})
export class UserModule {}
// auth.module.ts
@Module({
imports: [UserModule],
providers: [AuthService],
})
export class AuthModule {}
UserModule 引入了 AuthModule,而 AuthModule 又反过来引入 UserModule。NestJS 虽然提供了 forwardRef() 这种临时补丁,但问题并没有真正解决,只是勉强能跑。@Module({
providers: [JwtService, ConfigService],
exports: [JwtService, ConfigService],
})
export class CoreModule {}
以后需要这些服务的地方,统一引入 CoreModule,不再模块间互相引用。
2. 按“职责”而不是“功能”拆分模块user/ user.controller.ts user.service.ts user.module.ts auth/ auth.controller.ts auth.service.ts auth.module.ts我改成这样:
services/ auth.service.ts user.service.ts controllers/ auth.controller.ts user.controller.ts modules/ auth.module.ts user.module.ts边界更清晰、导入更简单,自然就不会出现“互相依赖”的死循环。
export interface UserStore {
findUserByEmail(email: string): Promise<User>;
}
AuthService 依赖的是 UserStore 接口,而不是 UserService 具体实现,这样就避免了双向绑定。3.依赖注入稳定性提升
结论
架构优化,不只是让代码更干净,还能让性能飞起来。如果你也在优化 NestJS,不妨看看你的模块导入关系。有时候,真正的性能瓶颈,就藏在那些你“习惯了”的结构里。