首页 > 解决方案 > Nest 无法解决 AuthService 的依赖关系 - 导入模块的问题,该模块使用 Mongoose 和提供者

问题描述

几个小时后,我的 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
}

牙医.service.ts

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

    //further code here...
}

牙医.providers.ts

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

整个项目可以在我在 GitHub 上的存储库中找到。

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

对于这个问题的任何帮助,我将不胜感激!

非常感谢,彼得

标签: typescriptmongoosenestjs

解决方案


我花了一分钟才找到它,但是您在files之间存在循环依赖关系,但不一定在服务本身之间存在(由于您使用静态方法的方式)。如果您查看auth.service.ts您正在进口的进口denstists.service.tsdentists.service.ts您正在进口的进口auth.service.ts,从而产生循环依赖,这也是为什么 Nest 没有给出关于它无法解决的问题的良好错误消息,而只是dependencyDentistsService.


推荐阅读