javascript - NestJS kan inte lösa beroenden för AuthServices
Efter det första problemet med JWT_MODULE_OPTION, tillbaka till det gamla problemet som jag trodde jag hade fixat. Det visade sig att när jag "fixade" det gamla problemet skapades det nya med JWT.
Så igen kan inte kompilera:
Nest kan inte lösa beroenden för AuthService (?, RoleRepository, JwtService). Vänligen se till att argumentet vid index [0] är tillgängligt i AppModule-kontexten. +25ms
Det är verkligen konstigt, eftersom detta sätt fungerar på ett annat av mina projekt och jag kan inte förstå var jag gör fel. Här är auth.service.ts:
@Injectable()
export class AuthService {
constructor(
@InjectRepository(User) private readonly userRepo: Repository<User>,
@InjectRepository(Role) private readonly rolesRepo: Repository<Role>,
private readonly jwtService: JwtService,
) { }
Det får roll och jwtService, men problemet är med User, sökvägen är korrekt. Här är app.module.ts:
@Module({
imports: [
TypeOrmModule.forRootAsync({
imports: [ConfigModule, AuthModule],
inject: [ConfigService],
useFactory: async (configService: ConfigService) => ({
type: configService.dbType as any,
host: configService.dbHost,
port: configService.dbPort,
username: configService.dbUsername,
password: configService.dbPassword,
database: configService.dbName,
entities: ['./src/data/entities/*.ts'],
}),
}),
],
controllers: [AppController, AuthController],
providers: [AuthService],
})
export class AppModule { }
Har samma kompileringsfel för controllers och providers och kan inte förstå vad som är fel...
Svar #1
Du kanske saknar TypeOrmModule.forFeature([User])-importen. Vanligtvis importeras alla entiteter i dedikerade funktionsmoduler. Om du bara har en modul (t.ex. AppModule) behöver du lägga forFeature-importen där utöver forRoot-importen.
@Module({
imports: [
TypeOrmModule.forRootAsync({...}),
TypeOrmModule.forFeature([User, Role]),
],
Svar #2
Det globala problemet var att jag försökte lägga till AuthService & AuthController två gånger. Så jag tog bort dem från app.module.ts och exporterar bara AuthService från auth.module.ts:
