Как создать глобальную динамику провайдеров - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь создать модуль с одноэлементным сервисом для получения экземпляра браузера кукловода

Я пытаюсь следовать документации без успеха и копаться в модуле typeorm без успеха

import { DynamicModule, Global, Module, Provider } from '@nestjs/common';
import puppeteer from 'puppeteer';
import { PuppeteerService } from './puppeteer.service';

@Global()
@Module({})
export class PuppeteerModule {
  static forRoot(options?): DynamicModule {
    const providers = [this.createPuppeteerService(options)];

    return {
      module: PuppeteerModule,
      providers,
      exports: providers,
    };
  }

  private static createPuppeteerService(options: puppeteer.LaunchOptions): Provider {
    return {
      provide: 'PUPPETEER_SERVICE',
      useFactory: async () => {
        const browser = await puppeteer.launch(options);
        const puppeteerService = new PuppeteerService(browser);
        return puppeteerService;
      },
    };
  }
}

@Module({
  imports: [
    PuppeteerModule.forRoot(config.puppeter.launchOptions),
]
  controllers: [AppController],
  providers: [],
  exports: [],
})
export class AppModule {}

Чего я хочу добиться, это зарегистрировать PuppeteerModule в корневом каталоге и просто сделать в другом модуле следующие вещи:

@Module({
  imports: [
    PuppeteerModule,
  ],
  providers: [
  ],
  controllers: [],
  exports: [],
})
export class AnotherModule {}

и иметь доступ к PupperterService

...