Nest не может разрешить зависимости, когда я пытался использовать @Inject ⇐ Javascript
-
Гость
Nest не может разрешить зависимости, когда я пытался использовать @Inject
Я пытался написать модуль npm. Теперь у меня есть два модуля:
import { DynamicModule, Module } из '@nestjs/common'; импортировать {DATABASE_TYPE, GameSystemDBModuleFactory, IConfig} из './common'; импортировать { GameSystemDBCacheModule } из './cache'; импортировать { GameSystemDBService } из './game-system-db.service'; @Модуль({}) класс экспорта GameSystemDBModule { статический регистр (конфигурации: IConfig ): DynamicModule { возвращаться { модуль: GameSystemDBModule, импорт: [ GameSystemDBModuleFactory.createModule(configs.databaseConfig), GameSystemDBCacheModule.register(configs.cacheConfig), ], провайдеры: [ GameSystemDBService, { предоставить: «SESSION_CONFIG», useValue: configs.sessionConfig, }, ], экспорт: [GameSystemDBService, 'SESSION_CONFIG'], }; } } и
import { DynamicModule, Module } из '@nestjs/common'; Импортировать { GAME_SYSTEM_DB_SERVICE_TOKEN, IPostgresConnectionConfig, } из '../common'; импортировать { PostgresGameSystemDBService } из './postgres-game-system-db.service'; импортировать {SequelizeModule} из '@nestjs/sequelize'; импортировать { UserSessionModule } из './user-session'; @Модуль({}) класс экспорта PostgresGameSystemDBModule { статический регистр (конфигурация: IPostgresConnectionConfig): DynamicModule { константные поставщики = [ { предоставить: GAME_SYSTEM_DB_SERVICE_TOKEN, useClass: PostgresGameSystemDBService, }, ]; возвращаться { модуль: PostgresGameSystemDBModule, импорт: [SequelizeModule.forRoot(config), UserSessionModule], провайдеры, экспорт: поставщики, }; } } В сервисе я пытаюсь использовать @Inject:
import { Inject, Injectable } из '@nestjs/common'; импортировать { GameSystemDBCacheService } из '../cache'; импортировать { SessionConfig } из 'lib/common/types/session-config.type'; импортировать {UserSessionRepository} из './user-session'; @Инъекционный() класс экспорта PostgresGameSystemDBService реализует IGameSystemDBService { конструктор( частный только для чтения userSessionRepository: UserSessionRepository, частная играSystemDBCacheService только для чтения: GameSystemDBCacheService, @Inject('SESSION_CONFIG') частный сеанс SessionConfig только для чтения: SessionConfig, ) {} } И я получаю сообщение об ошибке:
[Nest] 16076 - 22.09.2023, 10:10:05 ОШИБКА [ExceptionHandler] Nest не может разрешить зависимости PostgresGameSystemDBService (UserSessionRepository, GameSystemDBCacheService, ?). Убедитесь, что аргумент SESSION_CONFIG по индексу [2] доступен. в контексте PostgresGameSystemDBModule. Возможные решения: - Является ли PostgresGameSystemDBModule допустимым модулем NestJS? — Если SESSION_CONFIG является провайдером, является ли он частью текущего модуля PostgresGameSystemDBModule? - Если SESSION_CONFIG экспортируется из отдельного @Module, импортируется ли этот модуль в PostgresGameSystemDBModule? @Модуль({ imports: [ /* Модуль, содержащий SESSION_CONFIG */ ] }) Что мне следует сделать, чтобы решить эту проблему?
Я пытался поместить SESSION_CONFIG в экспорт в GameSystemDBModule, но эта ошибка все равно возникает. В сервисе PostgresGameSystemDBService я могу получить доступ к свойствам SESSION_CONFIG.
Я пытался написать модуль npm. Теперь у меня есть два модуля:
import { DynamicModule, Module } из '@nestjs/common'; импортировать {DATABASE_TYPE, GameSystemDBModuleFactory, IConfig} из './common'; импортировать { GameSystemDBCacheModule } из './cache'; импортировать { GameSystemDBService } из './game-system-db.service'; @Модуль({}) класс экспорта GameSystemDBModule { статический регистр (конфигурации: IConfig ): DynamicModule { возвращаться { модуль: GameSystemDBModule, импорт: [ GameSystemDBModuleFactory.createModule(configs.databaseConfig), GameSystemDBCacheModule.register(configs.cacheConfig), ], провайдеры: [ GameSystemDBService, { предоставить: «SESSION_CONFIG», useValue: configs.sessionConfig, }, ], экспорт: [GameSystemDBService, 'SESSION_CONFIG'], }; } } и
import { DynamicModule, Module } из '@nestjs/common'; Импортировать { GAME_SYSTEM_DB_SERVICE_TOKEN, IPostgresConnectionConfig, } из '../common'; импортировать { PostgresGameSystemDBService } из './postgres-game-system-db.service'; импортировать {SequelizeModule} из '@nestjs/sequelize'; импортировать { UserSessionModule } из './user-session'; @Модуль({}) класс экспорта PostgresGameSystemDBModule { статический регистр (конфигурация: IPostgresConnectionConfig): DynamicModule { константные поставщики = [ { предоставить: GAME_SYSTEM_DB_SERVICE_TOKEN, useClass: PostgresGameSystemDBService, }, ]; возвращаться { модуль: PostgresGameSystemDBModule, импорт: [SequelizeModule.forRoot(config), UserSessionModule], провайдеры, экспорт: поставщики, }; } } В сервисе я пытаюсь использовать @Inject:
import { Inject, Injectable } из '@nestjs/common'; импортировать { GameSystemDBCacheService } из '../cache'; импортировать { SessionConfig } из 'lib/common/types/session-config.type'; импортировать {UserSessionRepository} из './user-session'; @Инъекционный() класс экспорта PostgresGameSystemDBService реализует IGameSystemDBService { конструктор( частный только для чтения userSessionRepository: UserSessionRepository, частная играSystemDBCacheService только для чтения: GameSystemDBCacheService, @Inject('SESSION_CONFIG') частный сеанс SessionConfig только для чтения: SessionConfig, ) {} } И я получаю сообщение об ошибке:
[Nest] 16076 - 22.09.2023, 10:10:05 ОШИБКА [ExceptionHandler] Nest не может разрешить зависимости PostgresGameSystemDBService (UserSessionRepository, GameSystemDBCacheService, ?). Убедитесь, что аргумент SESSION_CONFIG по индексу [2] доступен. в контексте PostgresGameSystemDBModule. Возможные решения: - Является ли PostgresGameSystemDBModule допустимым модулем NestJS? — Если SESSION_CONFIG является провайдером, является ли он частью текущего модуля PostgresGameSystemDBModule? - Если SESSION_CONFIG экспортируется из отдельного @Module, импортируется ли этот модуль в PostgresGameSystemDBModule? @Модуль({ imports: [ /* Модуль, содержащий SESSION_CONFIG */ ] }) Что мне следует сделать, чтобы решить эту проблему?
Я пытался поместить SESSION_CONFIG в экспорт в GameSystemDBModule, но эта ошибка все равно возникает. В сервисе PostgresGameSystemDBService я могу получить доступ к свойствам SESSION_CONFIG.
Мобильная версия