Не удалось создать экземпляр модуля в AngularJS из-за отсутствия (загруженного) поставщика - PullRequest
0 голосов
/ 02 апреля 2019

Работает над старым проектом с использованием AngularJS и, похоже, получает старую добрую ошибку «Не удалось создать экземпляр модуля» из-за «Неизвестного поставщика», но забавно то, что модуль, предоставляющий этого «отсутствующего» поставщика, былзагружен, и поставщик является частью модуля.(Я знаю это, так как основной модуль также использует тот же модуль / поставщика)

(дерево зависимостей)

  Main Module
    - API Module
    - SubModule   <-- Fails when this is added
       - API Module

Загрузка основного модуля использует [custom-встроенный] API-модуль. Подмодуль, который я загружаю в основной модуль, также использует API-модуль, но когда я добавляю субмодуль, все выходит из строя, даже когда провайдер (из API-модуля) работает отлично.

Опять же, основной модуль использует провайдера из API, поэтому еще одна причина, по которой я знаю, что провайдер загружен.

Я восстановил порядок зависимости в обоих модулях и проверилпорядок, в котором загружаются модули, и все это выглядит по порядку.

Есть идеи, что может вызвать эту ошибку?

1 Ответ

0 голосов
/ 02 апреля 2019

разобрался что это было. Все это произошло из-за рефакторинга существующего кода приложения, который работал. Случилось так, что мой провайдер фактически загружал фабрику. То, что раньше было

mymodule.factory('substuff', function() {....});

То, что рефакторинг тоже был изменен, было ...

import SubStuffProvider from 'app/providers/SubStuff.provider'

....
mymodule.provider('substuff', SubStuffProvider);

Тем не менее, элемент, который я импортировал, экспортировал Factory (несмотря на то, что файл был помечен substuff.provider.js), а не Provider , который я думал, поэтому кажется, что он загружал провайдера с завода, который, как я считаю, находится в неправильном порядке загрузки для AngularJS.

В любом случае, исправление моего import ed-файла для загрузки файла «Provider» как заводской, как и должно быть, и работает.

Не могу дождаться, чтобы перенести эту штуку на Angular 6.

...