首页 > 解决方案 > Nest 无法解析 BullExplorer 的依赖关系

问题描述

当我运行 Nestjs 服务器时,出现以下错误。我正在使用 NestJS BullModule。

错误:Nest 无法解析依赖关系 BullExplorer (?, DiscoveryService, BullMetadataAccessor, MetadataScanner)请确保索引 [0] 处的参数 ModuleRef 在 BullModule 上下文中可用。

潜在的解决方案:

  • 如果 ModuleRef 是提供者,它是当前 BullModule 的一部分吗?
  • 如果 ModuleRef 是从单独的 @Module 导出的,那么该模块是否导入到 BullModule 中? @Module({ imports: [ /* the Module containing ModuleRef */ ] })

这是 Bull 模块配置:

    BullModule.forRootAsync({
  imports: [ConfigModule],
  useFactory: async (configService: ConfigService) => {
    const redisConfig = configService.get<RedisConfig>("redis");
    return {
      redis: {
        host: redisConfig.host,
        port: redisConfig.port,
      },
      defaultJobOptions: {
        timeout: 30000,
        removeOnComplete: true,
        removeOnFail: true,
        attempts: 3,
      },
    };
  },
  inject: [ConfigService],
}),
BullModule.registerQueue({
  name: MAIL_QUEUE,
}),

标签: nestjs

解决方案


事实证明这个问题在 NestJS 社区中是众所周知的。他们的不和谐在这里有一个完整的线程和对文档的 PR,提到如何解决这个问题,在这里等待合并。长话短说,如果你在使用 yarn 工作区的 monorepo 设置,你不想提升你的@nestjs依赖。在你的根级别配置它,package.json如下所示:

{
  "workspaces": {
    "packages": [],
    "nohoist": [
      "**/@nestjs/**"
    ]
  }
}

推荐阅读