首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nestjs无法解决我的依赖,即使它在模块上下文中可用

Nestjs无法解决我的依赖,即使它在模块上下文中可用
EN

Stack Overflow用户
提问于 2021-02-18 19:50:29
回答 2查看 2.1K关注 0票数 0

我犯了这样的错误:

代码语言:javascript
复制
Error: Nest can't resolve dependencies of the CreateGroupTask (TaskQueueService, GroupsService, ?, GroupNotificationsService, GroupRepository, Logger). Please make sure that the argument dependency at index [2] is available in the TasksModule context.

CreateGroupTasks服务看起来是这样的:

代码语言:javascript
复制
import { Logger } from 'nestjs-pino';
import { GroupNotificationsService } from '../bll/group/group-notifications.service';
import { Injectable, OnApplicationBootstrap } from '@nestjs/common';
import { GroupsService } from '../bll/group/groups.service';
import { PotentialGroupsService } from '../bll/potential-groups/potential-groups.service';
import { GroupRepository } from '../dal/user-group/group.repository';
import { TaskQueueService } from '../task-queue/task-queue.service';

export const CREATE_GROUP_TASK_NAME = 'create-group';
const CREATE_GROUP_TASK_DOMAIN = 'create-group-task';
@Injectable()
export class CreateGroupTask implements OnApplicationBootstrap {
  constructor(
    private readonly taskQueueService: TaskQueueService,
    private readonly groupsService: GroupsService,
    private readonly potentialGroupService: PotentialGroupsService,
    private readonly groupNotificationsService: GroupNotificationsService,
    private readonly groupsRepository: GroupRepository,
    private readonly logger: Logger,
  ) {}

  onApplicationBootstrap() {
    this.taskQueueService.registerTaskHandler(
      CREATE_GROUP_TASK_NAME,
      this.handle.bind(this),
    );
  }

  async handle([potentialGroupId]: [number]) { //handler code }
}

PotentialGroupsService是从BusinessLogicModule模块以及GroupsService导出的,GroupNotificationsService:

代码语言:javascript
复制
import { Module } from '@nestjs/common';
import { SendAuthLinkTask } from './send-auth-link.task';
import { CallReminderTask } from './call-reminder-task';
import { TaskQueueModule } from '../task-queue/task-queue.module';
import { RepositoryModule } from '../dal/repository.module';
import { CommunicationsgModule } from '../communication/communications.module';
import { BusinessLogicModule } from '../bll/business-logic.module';
import { SendStatsTask } from './send-stats.task';
import { WorkoutNotificationTask } from './workout-notification.task';
import { SayWelcomeTask } from './say-welcome.task';
import { CreateGroupTask } from './create-group.task';
import { GroupStartsReminderTask } from './group-starts-reminder.task';

@Module({
  imports: [
    TaskQueueModule,
    CommunicationsgModule,
    RepositoryModule,
    BusinessLogicModule,
  ],
  providers: [
    SendAuthLinkTask,
    CallReminderTask,
    SendStatsTask,
    WorkoutNotificationTask,
    SayWelcomeTask,
    CreateGroupTask,
    GroupStartsReminderTask,
  ],
})
export class TasksModule {}

以及从BusinessLogicModule导出的所有服务:

代码语言:javascript
复制
import { Module } from '@nestjs/common';
import { CommunicationsgModule } from '../communication/communications.module';
import { RepositoryModule } from '../dal/repository.module';
import { AuthService } from './auth-logic/auth.service';
import { SessionService } from './auth-logic/session.service';
import { GroupNotificationsService } from './group/group-notifications.service';
import { UserService } from './user/user.service';
import { MessageService } from './conversation/message.service';
import { ConversationService } from './conversation/conversation.service';
import { GroupsService } from './group/groups.service';
import { StatsService } from './statistics/workouts-stats';
import { InvitationsService } from './invitations/invitations.service';
import { TaskValidator } from './group/notification-task-validator.service';
import { PotentialGroupsService } from './potential-groups/potential-groups.service';
import { PotentialGroupCheckerCron } from './potential-groups/potential-groups-checker.cron';

@Module({
  imports: [CommunicationsgModule, RepositoryModule],
  providers: [
    AuthService,
    SessionService,
    GroupNotificationsService,
    UserService,
    MessageService,
    ConversationService,
    GroupsService,
    StatsService,
    InvitationsService,
    TaskValidator,
    PotentialGroupsService,
    PotentialGroupCheckerCron,
  ],
  exports: [
    AuthService,
    SessionService,
    GroupNotificationsService,
    UserService,
    MessageService,
    ConversationService,
    GroupsService,
    StatsService,
    InvitationsService,
    TaskValidator,
    PotentialGroupsService,
  ],
})
export class BusinessLogicModule {}

我做错什么了?为什么nest不能解决PotentialGroupService?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-18 20:15:07

从错误:

错误: Nest无法解决CreateGroupTask的依赖关系(TaskQueueService、GroupsService、?、GroupNotificationsService、GroupRepository、Logger)。请确保索引2处的参数依赖项在TasksModule上下文中可用。

Nest无法解决参数dependency。通常,当这种情况发生时,会有一个无法解析的循环文件导入,这意味着依赖项以undefined的形式出现,因此Nest为dep提供了一个通用名称。检查您的文件导入(包括桶文件),并确保您在意外情况下不会创建循环导入。

票数 2
EN

Stack Overflow用户

发布于 2021-02-19 11:05:53

它不能解决PotentialGroups问题。

确保PotentialGroupsModule是在BusinessLogicModule中导入的。并确保PotentialGroupsService是从PotentialGroupsModule导出的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66267162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档