typescript - 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 的数据库细节,必须做什么(导入和/或导出)?
对于这个问题的任何帮助,我将不胜感激!
非常感谢,彼得
解决方案
我花了一分钟才找到它,但是您在files之间存在循环依赖关系,但不一定在服务本身之间存在(由于您使用静态方法的方式)。如果您查看auth.service.ts
您正在进口的进口denstists.service.ts
和dentists.service.ts
您正在进口的进口auth.service.ts
,从而产生循环依赖,这也是为什么 Nest 没有给出关于它无法解决的问题的良好错误消息,而只是dependency
用DentistsService
.
推荐阅读
- filesystems - macFuse 需要 Mac OS 11+ 上的恢复模式
- react-native - 为什么 Metro Bundler 声称 app.json 不存在?
- python - Python,我希望用户输入文本文件
- html - “标记”类型上不存在属性“_popup”
' - xml - 这个带有 PI(处理指令)的 XML 有什么问题?
- pentaho - pentaho 依次执行多个sql脚本
- mysql - 使用多个 OR 运算符的 MySQL 查询建议
- python - try except 函数是否会在我们正在运行 try except on 的方法中捕获返回 0?
- tensorflow - 没有标签/注释的对象检测
- java - 创建不同的用户配置文件