NestJS无法解析模块内部的依赖关系

问题描述

我有两个模块:AuthModuleUserModule;

UserModule的外观如下:

@Module({
    imports: [
        forwardRef(() => AuthModule),TypeOrmModule.forFeature([
            UserRepository,UserAuthRepository,UserSocialRepository,])
    ],controllers: [UserController],exports: [UserAuthService,UserSocialService,UserService],providers: [UserAuthService,})
export class UserModule {}

该模块具有3个服务:UserAuthServiceUserSocialServiceUserService

UserAuthService的内容:

@Injectable()
export class UserAuthService {

    /**
     * UserAuthService constructor
     * @param { UserAuthRepository } _userAuthRepository
     * @param { UserRepository } _userRepository
     * @param { UserService } _userService
     * @param { UserSocialService } _userSocialService
     */
    constructor(
        private readonly _userAuthRepository: UserAuthRepository,private readonly _userRepository: UserRepository,private readonly _userService: UserService,private readonly _userSocialService: UserSocialService
    ) {}
}

UserSocialService的内容:

@Injectable()
export class UserSocialService {

    /**
     * UserSocialService constructor
     * @param { UserSocialRepository } _userSocialRepository
     */
    constructor(
        private readonly _userSocialRepository: UserSocialRepository,) {}
}

UserService的内容:

@Injectable()
export class UserService {

    /**
     * UserService constructor
     * @param { UserRepository } _userRepository
     * @param { UserAuthService } _userAuthService
     * @param { UserSocialService } _userSocialService
     */
    constructor(
        private readonly _userRepository: UserRepository,private readonly _userAuthService: UserAuthService,private readonly _userSocialService: UserSocialService
    ) {}
}

AuthModuleUserModule都具有forwardRef(() => Module)的含义,因为它们彼此依赖。

但是,问题出在UserModule内部,更具体地说是UserService,由于某种原因,它无法解决UserAuthService依赖性,从而产生了以下错误:

Error: Nest can't resolve dependencies of the UserService (UserRepository,?,UserSocialService). Please make sure that the argument dependency at index [1] is available in the UserModule context.

Potential solutions:
- If dependency is a provider,is it part of the current UserModule?
- If dependency is exported from a separate @Module,is that module imported within UserModule?
  @Module({
    imports: [ /* the Module containing dependency */ ]
  })

这是UserModule的结构:

user/
    controllers/
    dtos/
    exceptions/
    models/
    repositories/
    services/
        - index.ts
        - user.auth.service.ts
        - user.service.ts
        - user.social.service.ts
    subscribers/
    -index.ts

因此,即使所有3个服务都在一个模块中,并且将它们导出并标记为提供程序,NestJS出于某种原因仍无法解决它们。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)