【发布时间】:2020-10-23 01:44:30
【问题描述】:
我有两个模块:AuthModule 和 UserModule;
这是UserModule 的样子:
@Module({
imports: [
forwardRef(() => AuthModule),
TypeOrmModule.forFeature([
UserRepository,
UserAuthRepository,
UserSocialRepository,
])
],
controllers: [UserController],
exports: [UserAuthService, UserSocialService, UserService],
providers: [UserAuthService, UserSocialService, UserService],
})
export class UserModule {}
此模块有 3 个服务:UserAuthService、UserSocialService 和 UserService。
内容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
) {}
}
AuthModule 和 UserModule 都有 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 也由于某种原因无法解析它们。
【问题讨论】:
标签: typescript nestjs ioc-container