Гнездо JS: новый экземпляр HttpModule для импорта модуля - PullRequest
1 голос
/ 20 февраля 2020

Моя система nest js - это система, которая подключается к нескольким системам через вызовы API.

Для каждой системы я создал модуль для управления их процессами. Каждый из этих модулей импортирует HttpModule.

Я хочу иметь отдельные перехватчики Ax ios для каждого из модулей HttpModule каждого из этих модулей.

Это моя попытка проверить функциональность:

on a.module.ts:

@Module({
  imports: [
    HttpModule,
    // Other imports
  ],
  // controllers, providers and exports here
})
export class ModuleA implements OnModuleInit {
  constructor(private readonly httpService: HttpService) { }
  public onModuleInit() {
    this.httpService.axiosRef.interceptors.request.use(async (config: Axios.AxiosRequestConfig) => {
      console.log('Module A Interceptor');    
      return config;
    });
  }
}

Класс модуля для модуля B аналогичен, с другим сообщением в вызове console.log.

Я попытался сделать вызов http в систему B с использованием службы в модуле B, но оба сообщения отображаются в консоли.

Я подумал, что модуль http является единым узлом в системе, так как мне создать отдельный HttpModule для модуля A и модуль B?

1 Ответ

0 голосов
/ 21 февраля 2020

После прочтения документации по Dynami c Модулям и в этом отчете об ошибках выясняется, что вызов метода register() в импорте создает отдельный экземпляр HttpModule.

Поэтому мое решение - вызвать register() и передать пустой объект в оба объявления @Module Модуля.

@Module({
  imports: [
    HttpModule.register({}),
  ],
  // providers and exports
})

Я не уверен, что это правильный способ сделать это, но это похоже на работу.

...