Если provider
должен быть доступен вне модуля, в котором вы его определили, вам нужно добавить его к exports
в определении модуля (app.module
). Другой модуль (report.module
), использующий его, должен добавить модуль в определение imports
.
app.module.ts
const connectionProvider = {
provide: 'CONNECTION',
useValue: Connection,
};
@Module({
imports: [
ReportModule,
...
],
providers: [connectionProvider],
exports: ['CONNECTION'],
controllers: [AppController],
})
export class AppModule implements NestModule {}
report.module.ts
@Module({
imports: [
AppModule
],
providers: [],
controllers: [],
})
export class ReportModule implements NestModule {}
В вашем случае это приводит к круговой зависимости, которую необходимо разрешить.
Поскольку app.module
кажется вашим основным модулем, вы можете сделать его global , но вам все равно нужно экспортировать провайдера.
В качестве альтернативы я считаю хорошей практикой не определять каких-либо провайдеров в app.module
и использовать DynamicModule
(например, forRoot
и forFeature
статические функции инициатора) только для создания экземпляров того, что необходимо, но это кажется быть вне этого вопроса.