NestJS依赖注入报错:AuthService无法解析UserControl依赖
NestJS依赖注入错误解决:无法解析AuthService的UserControl依赖
错误日志
[Nest] 21020 - 07.02.2024, 18:50:03 ERROR [ExceptionHandler] Nest can't resolve dependencies of the AuthService (?). Please make sure that the argument UserControl at index [0] is available in the AuthModule context. Potential solutions: - Is AuthModule a valid NestJS module? - If UserControl is a provider, is it part of the current AuthModule? - If UserControl is exported from a separate @Module, is that module imported within AuthModule? @Module({ imports: [ /* the Module containing UserControl */ ] })
问题原因
NestJS模块的提供者默认不会对外暴露,即便AuthModule已导入DBModule,也无法直接使用DBModule内部定义的UserControl,必须显式在DBModule的exports数组中声明要对外提供的提供者。
解决方案
修改DBModule,将UserControl添加到exports数组中。由于UserControl依赖的PasswordManager和PrismaClient仅在DBModule内部被使用,无需额外导出;若其他模块需直接注入这两个服务,可一并加入exports。
修改后的DBModule代码
@Module({ imports: [], providers: [UserControl, PasswordManager, PrismaClient], controllers: [], exports: [UserControl] // 新增:导出UserControl供外部模块注入使用 }) export class DBModule {}
额外优化提示
- 确认AuthModule已正确导入DBModule(你的代码中已满足该条件):
@Module({ imports: [DBModule], controllers: [AuthController], providers: [AuthService], }) export class AuthModule {}
- 修复
UserControl中的逻辑bug:isValidLogin方法调用prisma.users.findFirst时未使用await,会导致判断逻辑失效,修改如下:
public async isValidLogin(login: string): Promise<boolean> { const existingUser = await this.prisma.users.findFirst({ where: { login: login } }); return existingUser === null; }
内容的提问来源于stack exchange,提问作者SubRight
相关产品推荐
相关产品推荐

