Nest JS Ошибка машинописи при использовании forwardRef - PullRequest
1 голос
/ 10 марта 2020

Я пытаюсь использовать провайдера в другом провайдере в том же модуле. Циркуляр до c предлагает использовать функцию forwardRef. Однако в моем модуле отображается следующая ошибка:

Type 'ForwardReference<any>' is not assignable to type 'Provider<any>'.
  Type 'ForwardReference<any>' is not assignable to type 'ExistingProvider<any>'.ts(2322)

enter image description here

Вот мой модуль:

@Module({
  imports: [],
  providers: [
    forwardRef(() => CartItemService),
    forwardRef(() => CartService),
    CartResolver,
    CartItemResolver,
    ,
    CartModel,
  ],
  exports: [CartService, CartItemService],
})
export class CartModule {}

А вот и суть моего провайдера

@Injectable()
export class CartService {
  constructor(
    @Inject(KNEX_CONNECTION) private readonly knex,
    @Inject(forwardRef(() => CartItemService))
    private readonly cartItem: CartItemService,
     ) {}
}

1 Ответ

2 голосов
/ 10 марта 2020

Функция forwardRef должна использоваться в списке imports, а не в providers, см. Пример в документации .

Также вы должны использовать ModuleRef. подход или метод forwardRef, а не оба.

Я предлагаю вам попробовать и реализовать пример в документации, чтобы определить, как реализовать его в своем коде.

Ваш модуль должен выглядеть примерно так:

@Module({
  providers: [
    CartItemService,
    CartService,
    CartResolver,
    CartItemResolver,
    CartModel,
  ],
  exports: [CartService, CartItemService] //only if this module is imported by other modules
})
export class CartModule {}

Служба, как вы сделали выше, в порядке:

@Injectable()
export class CartService {
  constructor (
    @Inject(KNEX_CONNECTION) private readonly knex,
    @Inject(forwardRef(() => CartItemService)) private readonly cartItem: CartItemService,
  ) {}
}
...