Угловой + минификация не работает в производстве и невозможно проверить

0

Я уже знаю о методе инъекции зависимостей, и все мои контроллеры, службы и директивы построены в следующем формате:

App.controller('name', ['myDependency', function (myDependency) { ... }]);

Даже если я выполнил это приложение в режиме разработки (не сведено к минимуму), он отлично работает, никаких проблем, проблем нет. Как только я попытаюсь запустить его в режиме производства (сведено к минимуму), он больше не работает.

Это ошибка в консоли:

Error: [$injector:unpr] Unknown provider: iProvider <- i

Нажав на ссылку, предлагаемую Angular, информация такая же, как я уже знаю, бесполезный.

Мое приложение имеет большое значение с точки зрения контроллеров, служб и т.д., Но оно построено на одном модуле, поэтому я уверен, что он ввел все необходимые файлы.

Я использую множество зависимостей поставщиков, таких как: ngRoute, ngAnimate, ngStorage, ngCookies и т.д....

Я не понимаю, почему Angular не обеспечивает что-то более надежное и эффективное для отладки вашего приложения, чтобы видеть и исправлять проблемы, очевидно, из минимизированного и сжатого javascript файла невозможно найти ошибку/ошибку... так как я могу ее решить?

Я уже дважды, triple проверил мои собственные файлы, и все они правильно содержат свои зависимости, но Angular говорят, что что-то не так, как я могу понять из этих 10 смешных строк в журнале консоли, где ошибка?

EDIT:

Добавляя ng-strict-di='true' и запуская его в режиме разработки, он запускает эту ошибку, и, похоже, это не связано с моим кодом... или я ошибаюсь?

Error: [$injector:strictdi] function($scope, $element) is not using explicit annotation and cannot be invoked in strict mode
http://errors.angularjs.org/1.3.15/$injector/strictdi?p0=function(%24scope%2C%20%24element)
    at REGEX_STRING_REGEXP (angular.js:63)
    at Function.annotate [as $$annotate] (angular.js:3474)
    at Object.invoke (angular.js:4181)
    at $get.extend.instance (angular.js:8493)
    at angular.js:7739
    at forEach (angular.js:331)
    at nodeLinkFn (angular.js:7738)
    at compositeLinkFn (angular.js:7117)
    at publicLinkFn (angular.js:6996)
    at newCompile (hint.js:2041)(anonymous function) @ angular.js:11655$get @ angular.js:8596(anonymous function) @ angular.js:16302completeOutstandingRequest @ angular.js:4924(anonymous function) @ angular.js:5312
  • 0
    Если у вас есть функция resolve и встроенного controller , проверьте их тоже
  • 0
    временно используйте неуменьшенную версию angular.js, чтобы увидеть полезное сообщение об ошибке.
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Добавьте атрибут ng-strict-di="true" к элементу, в котором вы уже применяете директиву ng-app, и запустите приложение в режиме разработки (то есть с неминифицированным кодом).

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

Обратите внимание, что ваш код будет более читабельным, и у вас будет гораздо меньше риска совершить эту ошибку, если вы разрешите ng-annotate преобразовать код для вас.

  • 0
    Я проверю это сейчас, не знал об этом. Спасибо
  • 0
    Я только что отредактировал свой вопрос с ошибкой, добавив его.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню