Soy nuevo en nest js y estoy tratando de implementar la autenticación con nest js usando el token JWT. Flujo este artículo para implementar mi código de autenticación.
Cuando ejecuto el código me sale un error como este.
**
[Nest] 16236 - 29/01/2022, 7:16:06 p. m. ERROR [ExceptionHandler] Nest no puede resolver las dependencias del AuthenticationService (?, JwtService, ConfigService). Asegúrese de que el argumento UsersService en el índice [0] esté disponible en el contexto AuthenticationModule. Posibles soluciones:
- Si UsersService es un proveedor, ¿forma parte del módulo de autenticación actual?
- Si UsersService se exporta desde un @Module separado, ¿ese módulo se importa dentro de AuthenticationModule? @Module({importaciones: [ /* el Módulo que contiene UsersService */ ] })
**
Y no tengo idea de qué está mal con mi código.
Este es mi módulo de usuario:
@Module({ imports: [TypeOrmModule.forFeature([User])], controllers: [UsersController], providers: [UsersService], }) export class UsersModule {}Este es mi módulo de autenticación:
@Module({ imports: [ UsersModule, PassportModule, ConfigModule, JwtModule.registerAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: async (configService: ConfigService) => ({ secret: configService.get('JWT_SECRET'), signOptions: { expiresIn: `${configService.get('JWT_EXPIRATION_TIME')}s`, }, }), }), ], controllers: [AuthenticationController], providers: [AuthenticationService, LocalStrategy, JwtStrategy], }) export class AuthenticationModule {}Este es mi módulo de aplicación:
@Module({ imports: [ TypeOrmModule.forRoot(ORM_CONFIG), ConfigModule.forRoot({ validationSchema: Joi.object({ JWT_SECRET: 'ABC', JWT_EXPIRATION_TIME: '1d', }), }), ItemModule, CategoryModule, ItemHasCategoryModule, OrderModule, OrderHasItemModule, PaymentModule, CustomerModule, UsersModule, AuthenticationModule, ], controllers: [], providers: [], }) export class AppModule {}Mi archivo de servicio de autenticación:
@Injectable() export class AuthenticationService { constructor( private readonly usersService: UsersService, private readonly jwtService: JwtService, private readonly configService: ConfigService, ) {}Mi archivo UsersService:
@Injectable() export class UsersService { constructor( @InjectRepository(User) private readonly userRepository: Repository<User>, ) {}Si alguien sabe la respuesta a esto... Realmente necesito su ayuda... He estado luchando con este error durante horas... Gracias.
Debe exportar UserService para poder usarlo en otros módulos.
@Module({ imports: [TypeOrmModule.forFeature([User])], controllers: [UsersController], providers: [UsersService], exports: [UsersService] }) export class UsersModule {}Explicación sobre la matriz de exportaciones:
el subconjunto de proveedores que proporciona este módulo y debe estar disponible en otros módulos que importan este módulo. Puede usar el proveedor en sí o solo su token (proporcionar valor)
Más detalles sobre los módulos: https://docs.nestjs.com/modules