Экспорт из динамического модуля в Nest
Пусть сводка по сайту живёт в отдельном модуле, а имя папки записей задаёт модуль темы. Без экспорта токена сосед не увидит значение в своих провайдерах и контроллерах.
Список exports в объекте
настройки работает так же,
как у обычного @Module:
импортировавший модуль может
внедрить строковый токен,
если он перечислен в
exports. Достаточно
подключить результат настройки
в imports соседа.
Покажем на примере постов. Модуль сводки импортирует настроенную тему:
import { Module } from '@nestjs/common';
import { PostsModule } from '../posts/posts.module.js';
import { StatsController } from './stats.controller.js';
@Module({
imports: [PostsModule.register({ folder: 'posts' })],
controllers: [StatsController],
})
export class StatsModule {}
Контроллер сводки запросит тот же токен и вернёт строку:
import { Controller, Get, Inject } from '@nestjs/common';
@Controller('stats')
export class StatsController {
folder: string;
constructor(@Inject('FOLDER') folder: string) {
this.folder = folder;
}
@Get()
getFolder(): string {
return this.folder;
}
}
Корень подключит только модуль сводки - тема приедет вместе с ним:
import { Module } from '@nestjs/common';
import { StatsModule } from './stats/stats.module.js';
@Module({
imports: [StatsModule],
})
export class AppModule {}
Откройте токен каталога из
настроенного WorkersModule
модулю отчёта и верните строку
из ReportController.