es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nest no puede resolver las dependencias del JwtService aunque se exporten desde otro módulo.

Estoy utilizando @nestjs/jwt en mi proyecto NestJS.

Tengo dos módulos, AuthModule y AppModule.
– El AuthModule utiliza @nestjs/jwt.
– El AppModule invoca el servicio de autenticación del AuthModule.

AuthService:

import { Injectable } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { ForbiddenException } from '@nestjs/common';

@Injectable()
export class AuthService {
  constructor(private readonly jwt: JwtService) {}

  async validate(token: string) {
    return this.jwt.verify(token);
  }
   ...
}

AuthModule:

import { Module } from '@nestjs/common'
import { TokenService } from './auth.service'
import { ConfigModule, ConfigService } from '@nestjs/config'
import { JwtModule } from '@nestjs/jwt'

@Module({
  imports: [
    JwtModule.register({
          secret: "mysecret",
          signOptions: { expiresIn: "60s" },
        }),
  ],
  // Proporciono AuthService & JwtService
  providers: [AuthService, JwtService], 
  // Exporto AuthService y JwtService
  exports: [AuthService, JwtService],
})
export class AuthModule {}

AppModule:

@Module({
  imports: [
    AuthModule,
    ...
  ],
  controllers: [AppController],
  // Proporciono AuthService & JwtService también en AppModule
  providers: [AppService, JwtService],
})
export class AppModule {}

(El AppController invoca una instancia del AuthService para validar el token.)

Constantemente obtengo el error:

Nest can't resolve dependencies of the JwtService (?). Please make sure that the argument JWT_MODULE_OPTIONS at index [0]

¿Por qué ocurre eso? ¿Qué me falta?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema es que estás importando y proporcionando el JwtService dos veces, una vez en AuthModule y otra en AppModule. Dado que el JwtModule solo se importa y configura en AuthModule, no está disponible en AppModule donde es necesario para JwtService. Debes eliminar el JwtService del array de proveedores en AppModule, e importar y usar en su lugar el AuthService de AuthModule en tus controladores o servicios en AppModule. De esta manera, NestJS sabrá que el JwtService ya ha sido proporcionado en AuthModule.

Comments are closed.