【问题标题】:Nest can't resolve dependencies of the AuthService - Issues with importing module that uses Mongoose with a providerNest 无法解决 AuthService 的依赖关系 - 导入模块的问题,该模块使用 Mongoose 和提供者
【发布时间】:2020-10-24 21:53:37
【问题描述】:

几个小时后,我的 NestJS 应用程序无法解决以下问题:

Nest 无法解析 AuthService(?、DentalLabsService、JwtService)的依赖关系。请确保索引 1 处的参数依赖项在 AuthModule 上下文中可用。

我有一个使用三个服务的 AuthService:DentistsService、DentalLabsService、JwtService。每个服务都是不同模块的一部分。这两个服务(DentistsService 和 DentalLabsService)又有依赖关系(MongoDB / Mongoose)。提供者常量为服务提供数据库细节。主要的重要结构如下所示:

auth.service.ts

@Injectable()
export class AuthService {
    constructor(
        private dentistsService: DentistsService,
        private dentalLabsService: DentalLabsService,
        private jwtService: JwtService) {}

    //further code here
}

dentists.service.ts

@Injectable()
export class DentistsService {
    constructor(
        @Inject('DENTIST_MODEL')
        private dentistModel: Model<Dentist>,
    ) {}

    //further code here...
}

dentists.providers.ts

export const dentistsProviders = [
    {
        provide: 'DENTIST_MODEL',
        useFactory: (connection: Connection) => connection.model('Dentist', DentistSchema),
        inject: ['DATABASE_CONNECTION'],
    },
];

整个项目可以在我在 GitHub 上的repository 中找到。

为了使 AuthService 了解依赖的 DentistsService 和 DentalLabService 的数据库细节,必须做什么(导入和/或导出)?

如果能在这个问题上提供任何帮助,我将不胜感激!

非常感谢, 彼得

【问题讨论】:

    标签: typescript mongoose nestjs


    【解决方案1】:

    我花了一分钟才找到它,但是文件之间存在循环依赖关系,但服务本身之间不一定存在循环依赖关系(由于您使用静态方法的方式)。如果您查看 auth.service.ts 的导入,则您正在导入 denstists.service.ts,而在 dentists.service.ts 中,您正在导入 auth.service.ts,从而产生循环依赖,这也是 Nest 没有给出关于它的内容的好的错误消息的原因无法解决,只有dependency 而不是DentistsService

    【讨论】:

    • 非常感谢@JayMcDoniel!解决循环依赖解决了这个问题!太好了!
    猜你喜欢
    • 2020-12-13
    • 2020-11-25
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2021-07-17
    • 2019-09-14
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多