首页 > 解决方案 > Nest 无法解析 AuthPhoneService (CredentialsRepository, ?, ConfigService) 的依赖关系

问题描述

我正在尝试将 NestJS 与 typeorm 一起使用。虽然我已经查看了其他一些类似的问题,但这似乎有所不同,因为我在一个服务中使用了两个存储库,而且我似乎看不到我做错了什么。

错误:

Nest can't resolve dependencies of the AuthPhoneService (CredentialsRepository, ?, ConfigService). Please make sure that the argument Repository at index [1] is available in the AuthPhoneModule context.

我有一个名为 AuthPhoneService 的服务。它接受两个 repos 作为构造函数参数:

@UseFilters(new UncaughtExceptionsFilter())
@Injectable()
export class AuthPhoneService {

    constructor(@InjectRepository(Credentials)
    private credentialsRepo: Repository<Credentials>,
        private publicKeysRepo: Repository<PublicKeys>,
        private configService: ConfigService
    ) { }
...

由于错误表明 publicKeysRepo 有问题:

我试过这样定义我的模块:

import { Module } from '@nestjs/common';
import { AuthController } from '../auth-controller';
import { AuthPhoneService } from './auth-phone.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Credentials } from '../credential/credentials.entity';
import { AuthVerifyController } from '../verify/auth-verify.controller';
import { PublicKeys } from './publickeys.entity';
@Module({
    imports: [
        TypeOrmModule.forFeature([Credentials]),
        TypeOrmModule.forFeature([PublicKeys])
    ],
    providers: [AuthPhoneService],
    controllers: [AuthController, AuthVerifyController],

})
export class AuthPhoneModule { }

像这样...


import { Module } from '@nestjs/common';
import { AuthController } from '../auth-controller';
import { AuthPhoneService } from './auth-phone.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Credentials } from '../credential/credentials.entity';
import { AuthVerifyController } from '../verify/auth-verify.controller';
import { PublicKeys } from './publickeys.entity';
@Module({
    imports: [
        TypeOrmModule.forFeature([Credentials,PublicKeys])
    ],
    providers: [AuthPhoneService],
    controllers: [AuthController, AuthVerifyController],

})
export class AuthPhoneModule { }


这两个选项都不起作用,并且总是产生相同的错误。

任何帮助将不胜感激。

标签: nestjs

解决方案


看起来你缺少@InjectRepository()装饰器publicKeysRepo

@UseFilters(new UncaughtExceptionsFilter())
@Injectable()
export class AuthPhoneService {

    constructor(
    @InjectRepository(Credentials)
    private credentialsRepo: Repository<Credentials>,
    @InjectRepository(PublicKeys) // <-- add this
    private publicKeysRepo: Repository<PublicKeys>,
    private configService: ConfigService
    ) { }
...

推荐阅读