typescript - Nest 无法解析全局模块中服务的依赖关系
问题描述
我有一个名为FirebaseModule
导出 a的全局模块FirebaseService
,我将此模块导入到app.module.ts
,然后我尝试使用FirebaseService
内部 aUsersService
并且它因缺少依赖关系问题而失败。
有趣的是,如果我删除服务上的使用并仅在控制器上使用它,一切都会失败,但如果我想在服务提供者中使用它,它就会开始失败。
我的代码:
app.module.ts
@Module({
imports: [
CustomLoggerModule,
ConfigurationModule,
TypeOrmModule.forRootAsync({
useExisting: ConfigurationService,
}),
FirebaseModule,
UsersModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
firebase.module.ts
@Global()
@Module({
imports: [],
providers: [FirebaseService],
exports: [FirebaseService],
})
export class FirebaseModule {}
users.module.ts
@Module({
imports: [CqrsModule, TypeOrmModule.forFeature([UsersRepository])],
controllers: [UsersController],
providers: [UsersService, ...CommandHandlers, ...EventHandlers],
exports: [UsersService, TypeOrmModule.forFeature([UsersRepository])],
})
export class UsersModule {}
users.controller.ts
@Controller('users')
@UseGuards(AuthGuard('firebase'))
export class UsersController {
constructor(
private readonly usersService: UsersService,
private readonly firebaseService: FirebaseService,
) {}
}
users.service.ts
@Injectable()
export class UsersService {
constructor(
private readonly firebaseService: FirebaseService,
private readonly repository: UsersRepository,
) {}
}
我收到以下错误:
Nest can't resolve dependencies of the UsersService (?, UsersRepository). Please make sure that the argument dependency at index [0] is available in the UsersModule context.
解决方案
您的 UserService 中很可能有一个对 FirebaseService 的循环文件引用。如果 Nest 能够解析类/提供者/注入令牌的名称,它会明确说明该令牌是什么,但是当它无法解析时,所有的输出都是dependency
. 这是来自文档的更多信息
推荐阅读
- c# - 检查网站名称是否存在于 IIS 中不起作用
- python - 使用 Python 读取 CSV 文件的值
- model-view-controller - 如果没有小数,则显示不带小数的 SQL 小数类型
- visual-studio - 如何在 VS2017 中为 dotnet 核心 Web API 应用程序设置 docker 项目 (dcproj)
- c - 对格式说明符整数 (%d) 的理解
- bootstrap-4 - Bootstrap - 使用表格响应固定左侧列并且不固定单元格宽度(以像素为单位)?
- javascript - 如何在.net MVC5中使用ViewBag中的数据绘制图表
- cassandra - 即使在覆盖超时后,Cassandra ReadTimeoutException 也会在表中获取所有记录
- javascript - JavaScript,React:使用 ColorPicker 创建按钮
- azure - 从数据工厂 v2 中的 azure 数据存储中过滤数据