Внедрить сервис родительского модуля в NestJS - PullRequest
0 голосов
/ 28 марта 2020

У меня есть три модуля в гнезде JS: EndpointModule, JWTModule и указанные c конечные точки в качестве модулей (например, InfoModule)

Мой модуль EndpointModule выглядит следующим образом:

@Module({
    imports: [
        JWTModule.withRSAKeys(
            Path.resolveByApp('./private.key'),
            Path.resolveByApp('./public.key')
        ),
        InfoModule,
        //More Endpoints
    ],
    exports: [JWTModule]
})
export class EndpointModule {}

JWTModule, как это:

@Module({
    providers: [JWTService],
    exports: [JWTService]
})
export class JWTModule {
    static async withRSAKeys(
        privateKeyPath: string,
        publicKeyPath: string
    ): Promise<DynamicModule> {
        return {
            module: JWTModule,
            providers: await this.createProviders(privateKeyPath, publicKeyPath)
        };
    }

Как видите, JWTModule является динамическим c модулем. Теперь я хочу добавить экспортированный JWTService в мои контроллеры конечных точек. Например:

@Module({
    controllers: [InfoController]
})
export class InfoModule {}

@Controller()
export class InfoController {
    constructor(private jwt: JWTService){};

Это не работает. Я должен импортировать EndpointModule в моем InfoModule, но это создает круговую зависимость. Есть ли способы избежать этого? Должен ли я изменить порядок своих модулей?

1 Ответ

0 голосов
/ 29 марта 2020

Вам необходимо импортировать JWTModule в InfoModule или украсить EndpointModule с помощью Global ()

...