Nest 无法解析 AuthService 的依赖项(?,JwtService)
Nest can't resolve dependencies of the AuthService (?, JwtService)
我在使用 nest js 默认生成的测试时遇到了一些问题。我确保我的服务没有循环声明,并且都是完全导出的服务和导入的模块。我试过其他类似的堆栈问题,但似乎不是我的情况。请告诉我如何解决它。谢谢
这是我的存储库:https://github.com/ThanhDeveloper/NestJsApp
我的授权控制器:
export class AuthController {
constructor(private readonly authService: AuthService) {}
@Post('login')
@UseGuards(AuthGuard('local'))
@ApiBody({ type: LoginUserDto })
@UseInterceptors(TransformInterceptor)
@HttpCode(200)
async login(@Request() req) {
return await this.authService.login(req.user);
}
@Post('register')
@UseInterceptors(TransformInterceptor)
async signUp(@Body() registerUserDto: RegisterUserDto) {
return await this.authService.register(registerUserDto);
}
}
我的授权服务:
export class AuthService {
constructor(
private readonly userService: UsersService,
private readonly jwtService: JwtService,
) {}
}
auth.module.ts:
@Module({
imports: [
PassportModule,
UsersModule,
JwtModule.register({
secret: JWTKEY,
signOptions: { expiresIn: TOKEN_EXPIRATION },
}),
],
providers: [AuthService, LocalStrategy, JwtStrategy],
controllers: [AuthController],
})
export class AuthModule {}
user.module.ts:
@Module({
controllers: [UsersController],
providers: [UserProfile, UsersService, ...usersProviders],
exports: [UsersService],
})
export class UsersModule {}
app.module.ts
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
DatabaseModule,
UsersModule,
AuthModule,
CrawlersModule,
AutomapperModule.forRoot({
options: [{ name: 'classMapper', pluginInitializer: classes }],
singular: true,
}),
],
})
export class AppModule {}
错误日志:
UsersService
进行了 UserRepository
注射。因此,如果您想测试导入(或使用)的控制器或服务 UsersService
,您必须注入它或使用存储库模拟。
- 将
auth.controller.spec.ts
改为
- 将
auth.service.spec.ts
改为
- 将
users.controller.spec.ts
改为
- 将
users.service.spec.ts
改为
你所有的错误都将消失
我在使用 nest js 默认生成的测试时遇到了一些问题。我确保我的服务没有循环声明,并且都是完全导出的服务和导入的模块。我试过其他类似的堆栈问题,但似乎不是我的情况。请告诉我如何解决它。谢谢
这是我的存储库:https://github.com/ThanhDeveloper/NestJsApp
我的授权控制器:
export class AuthController {
constructor(private readonly authService: AuthService) {}
@Post('login')
@UseGuards(AuthGuard('local'))
@ApiBody({ type: LoginUserDto })
@UseInterceptors(TransformInterceptor)
@HttpCode(200)
async login(@Request() req) {
return await this.authService.login(req.user);
}
@Post('register')
@UseInterceptors(TransformInterceptor)
async signUp(@Body() registerUserDto: RegisterUserDto) {
return await this.authService.register(registerUserDto);
}
}
我的授权服务:
export class AuthService {
constructor(
private readonly userService: UsersService,
private readonly jwtService: JwtService,
) {}
}
auth.module.ts:
@Module({
imports: [
PassportModule,
UsersModule,
JwtModule.register({
secret: JWTKEY,
signOptions: { expiresIn: TOKEN_EXPIRATION },
}),
],
providers: [AuthService, LocalStrategy, JwtStrategy],
controllers: [AuthController],
})
export class AuthModule {}
user.module.ts:
@Module({
controllers: [UsersController],
providers: [UserProfile, UsersService, ...usersProviders],
exports: [UsersService],
})
export class UsersModule {}
app.module.ts
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
DatabaseModule,
UsersModule,
AuthModule,
CrawlersModule,
AutomapperModule.forRoot({
options: [{ name: 'classMapper', pluginInitializer: classes }],
singular: true,
}),
],
})
export class AppModule {}
错误日志:
UsersService
进行了 UserRepository
注射。因此,如果您想测试导入(或使用)的控制器或服务 UsersService
,您必须注入它或使用存储库模拟。
- 将
auth.controller.spec.ts
改为
- 将
auth.service.spec.ts
改为
- 将
users.controller.spec.ts
改为
- 将
users.service.spec.ts
改为
你所有的错误都将消失