Nest не может разрешить зависимости ICommandBusAdapter

#nestjs

#nestjs

Вопрос:

Пытаюсь использовать мой ICommandBusAdapter.ts в моем CreateUserAction.ts, но получаю следующую ошибку: [ExceptionHandler] Nest can't resolve dependencies of the ICommandBusAdapter (?). Please make sure that the argument at index [0] is available in the AdapterModule context

Я создал AdapterModule , который будет использовать все поставщики для других модулей, но, похоже, это не работает.

Есть идеи?

AppModule.ts

 import { UserModule } from './User/UserModule';
import { AdapterModule } from './Common/AdapterModule';

@Module({
  imports: [AdapterModule, UserModule, // ...],
})
export class AppModule {}
  

AdapterModule.ts

 import { CommandBusAdapter } from 'src/Infrastructure/Adapter/Bus/CommandBusAdapter';

const providers = [
  { provide: 'ICommandBusAdapter', useClass: CommandBusAdapter },
  // ...
];

@Module({
  providers: [...providers],
  exports: [...providers],
})
export class AdapterModule {}
  

UserModule.ts

 import { Module } from '@nestjs/common';
import { CreateUserAction } from 'src/Infrastructure/Action/User/CreateUserAction';
@Module({
  controllers: [CreateUserAction],
})
export class UserModule {}

  

CommandBusAdapter.ts

 import { CommandBus, ICommand } from '@nestjs/cqrs';
import { ICommandBusAdapter } from 'src/Application/Adapter/Bus/ICommandBusAdapter';

@Injectable()
export class CommandBusAdapter implements ICommandBusAdapter {
  constructor(private readonly commandBus: CommandBus) {}

  execute = (command: ICommand) => {
    return this.commandBus.execute(command);
  };
}
  

CreateUserAction.ts

 import { ICommandBusAdapter } from 'src/Application/Adapter/Bus/ICommandBusAdapter';

export class CreateUserAction {
  constructor(
    @Inject('ICommandBusAdapter')
    private readonly commandBus: ICommandBusAdapter,
  ) {}
// ...
  

Комментарии:

1. Где это CommandBus предусмотрено?

Ответ №1:

Вы не забыли добавить CqrsModule в свое приложение?

 import { CqrsModule } from '@nestjs/cqrs';

@Module({
  imports: [CqrsModule]
  ....
  

Без этого не будет ничего, обеспечивающего командную шину, которую вы пытаетесь внедрить.

Вы можете увидеть пример здесь:https://github.com/kamilmysliwiec/nest-cqrs-example/blob/master/src/heroes/heroes.module.ts

Комментарии:

1. Не стесняйтесь повышать голос или отмечать это как ответ, если это сработало для вас