AngularJS «неизвестный провайдер» после минификации (активируется ng-strict-di) - PullRequest
0 голосов
/ 26 апреля 2018

Сначала я объединяю все свои файлы js с помощью задачи grunt-contrib-concat grunt. С этим все работало нормально (без минификации).

Я пытаюсь переключиться на Google Closure Compiler, чтобы я мог его минимизировать и добавить исходные карты, для начала я использую следующие параметры: --compilation_level WHITESPACE_ONLY и --formatting=pretty_print, и я передаю файлы в том же порядке, что и Я делал это раньше с задачей grunt, поэтому у меня должен был быть первый вывод, похожий на тот, что у меня был раньше.

ПРИМЕЧАНИЕ: Благодаря некоторой возвышенной текстовой магии и проверке различий, я смог проверить, что оба моих окончательно сгенерированных файла получили все те же контроллеры / сервисы в порядке ТОЧНОГО ЖЕ.

Все мои контроллеры не использовали синтаксис аннотации (зависимости объявлялись как строка перед контроллером), поэтому я использовал ng-annotate и этот скрипт для решения этой проблемы.

Теперь все мои файлы готовы к минификации. Чтобы быть уверенным в этом, я даже объявил ng-strict-di в своем приложении и временно переключился на предыдущую систему конкатенации. Он отлично работает и не работает, если я намеренно вставляю опечатку в имя моего контроллера.

Итак, из этого я подумал, что Closure Compiler должен был работать как чудо ... Но нет, я сталкиваюсь с ошибкой Unknown Provider, когда angular пытается внедрить мой первый сервис в мою функцию app.run(). (.config() выполняется хорошо, так как здесь у меня нет пользовательских зависимостей, а также трех первых зависимостей .run(). Это действительно МОЯ личная реализация зависимости, которая терпит неудачу.)

Кто-то уже сталкивался с подобной проблемой? Есть идеи, что может вызвать это?

1 Ответ

0 голосов
/ 27 апреля 2018

Хорошо ... Я обнаружил, что компилятор замыкания не импортирует файлы так же, как задание grunt, которое я использовал.

При использовании обозначения src/js/controllers/**/*.js я ожидал, что он импортирует файлы прямо в папку моего контроллера, но это не так.

Я был уверен, что проверил это, но я определенно допустил ошибку и сравнил старый файл со старым файлом вместо нового; вот почему я думал, что я получил все свои зависимости в файле и в том же порядке при проверке ...

...