У меня есть приложение React Native со многими инъекционными модулями и магазинами. В настоящий момент я получаю сообщение об ошибке: @inject вызывается с неопределенным значением, это может означать, что у класса ScreenInstrumentSearchVM есть проблема циклической зависимости. Вы можете использовать LazyServiceIdentifier, чтобы преодолеть это ограничение. И этот класс имеет следующую зависимость:
constructor(
@Inject(IReportServiceTid) private _reportService: IReportService,
@Inject(INavigationManagerTid) private _navigation: INavigationManager,
@Inject(ISearchPreferencesTid) private _preferences: ISearchPreferences,
@Inject(IErrorHandlerServiceTid) private _errorHandler: IErrorHandlerService,
@Inject(INotificationServiceTid) private _notification: INotificationService,
@Inject(ILoggerServiceTid) private _log: ILogger
) {}
Мои шаги были:
1) Я проверил все эти модули и попытался найти циклическую зависимость между собой, но не нашел ее:
Зависимость ReportService: ApiEndPointProvider, ApiTokenProvider, HttpClientFactory.
Зависимость NavigationManager: LoggerService.
Зависимость LogerService: IConstService.
* зависимость *. * 1013 1014 *
Зависимость предпочтений: нет DI.
Зависимость ErrorHandler: LoggerService, NotificationService.
Зависимость NotificationService: Нет DI.
2) Второй шаг был в соответствии с эту статью https://github.com/inversify/InversifyJS/blob/master/wiki/circular_dependencies.md изменить на InjectLazy:
constructor(
@InjectLazy(IReportServiceTid) private _reportService: IReportService,
@InjectLazy(INavigationManagerTid) private _navigation: INavigationManager,
@InjectLazy(ISearchPreferencesTid) private _preferences: ISearchPreferences,
@InjectLazy(IErrorHandlerServiceTid) private _errorHandler: IErrorHandlerService,
@InjectLazy(INotificationServiceTid) private _notification: INotificationService,
@InjectLazy(ILoggerServiceTid) private _log: ILogger
) {}
Но все эти шаги у меня не сработали. Можете ли вы порекомендовать мне, пожалуйста, как я могу обнаружить эту циклическую зависимость и решить мою ошибку?