Nest js - круговая ссылка на данный момент для инъекции репозитория - PullRequest
0 голосов
/ 05 августа 2020

Каждый раз, когда я пытаюсь запустить свой проект, я получаю сообщение об ошибке:

CircularDependencyException [Ошибка]: внутри @InjectRepository () обнаружена циклическая зависимость. Пожалуйста, убедитесь, что каждая сторона двунаправленных отношений украшена "forwardRef ()". Кроме того, попробуйте удалить файлы стволов, потому что они тоже могут привести к неожиданному поведению. 1009 *

constructor(
        @InjectRepository(Role) private roleRepo: Repository<Role>
    ){}

и проект запускается, но я замечаю журнал, когда запускаю проект, модуль с ошибкой запускается раньше всего

[Nest] 16872   - 08/04/2020, 7:56:24 PM   [NestFactory] Starting Nest application...
[Nest] 16872   - 08/04/2020, 7:56:24 PM   [InstanceLoader] TypeOrmModule dependencies initialized +91ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] MyErrorModule dependencies initialized +500ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] TypeOrmCoreModule dependencies initialized +630ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] TypeOrmModule dependencies initialized +2ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] TypeOrmModule dependencies initialized +1ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] TypeOrmModule dependencies initialized +1ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] TypeOrmModule dependencies initialized +1ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] TypeOrmModule dependencies initialized +4ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] AuthorizationModule dependencies initialized +3ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] AppModule dependencies initialized +3ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] FirstModule dependencies initialized +2ms

Но у меня есть файл app.module.ts с

@Module({
  imports: [TypeOrmModule.forRootAsync({
    useClass: DatabaseConnectionService
  }), 
  AuthorizationModule,
  TypeOrmModule.forFeature([User, Role]),
  FirstModule, 
  SecondModule,
  MyErrorModule, //This is the first to be executed
],

Кто-то знает, как решить эту проблему?

1 Ответ

0 голосов
/ 05 августа 2020

Что ж, я решил не удалять этот вопрос, потому что он может быть полезен другим.

Эта часть журнала была важна для отладки моей проблемы:

[Nest] 16872   - 08/04/2020, 7:56:24 PM   [NestFactory] Starting Nest application...
[Nest] 16872   - 08/04/2020, 7:56:24 PM   [InstanceLoader] TypeOrmModule dependencies initialized +91ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] MyErrorModule dependencies initialized +500ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] TypeOrmCoreModule dependencies initialized +630ms
[Nest] 16872   - 08/04/2020, 7:56:25 PM   [InstanceLoader] TypeOrmModule dependencies initialized +2ms

И я заметил, что один из модулей был зарегистрирован раньше всего, и причина была в том, что у меня был неиспользованный import в одной из моих служб, и этот импорт содержал другую службу, которая создавала циклическую ссылку.

Вот почему в этой теме: https://github.com/nestjs/nest/issues/3555#issuecomment -562468943 написано Камил Мыслив iec

Эта ошибка означает, что вы ' Мы передали неопределенное значение в декоратор @InjectRepository (). Мы не можем создать ничего более информативного :( Убедитесь, что у вас нет циклических зависимостей между вашим entity <-> service.

И это правда, с импортом я попытался ввести незарегистрированный Модуль / Сервис, который еще не был готов. Итак, решение ДЛЯ ДАННОЙ СПЕЦИФИКАЦИИ C CASE, очистите код и удалите неиспользуемый импорт.

...