Отключение неявной инъекции зависимостей в AngularJS

Я пытаюсь отладить отсутствующий провайдер в проекте Big-ish AngularJS. Ошибка - отсутствующий "dProvider". Это происходит только в версии кода, который был минимизирован, что имеет смысл, потому что у нас нет контроллеров, фабрик или сервисов 'd'. У меня возникли проблемы с поиском того, что вызывает это, и поиск по сокращенному коду для таких вещей, как function(a,b,c,d) еще ничего не принес. Есть ли способ принудительно вводить только явную зависимость в Angular? Кажется, если бы я мог заставить это, я мог бы поймать проблему в среде dev.

3 ответа

******! Поскольку Angular 1.3.1 вы можете отключить неявную инъекцию зависимостей!

Из кода, используя свойство strictDi config:

angular.bootstrap(document, ['myApp'], {
 strictDi: true
});

Или из шаблона, используя директиву ng-strict-di:


Ничего себе от этого.

Вероятно, этот контроллер/служба определен как

app.controller('myCtrl', function($scope){
 ...
})

вместо более безопасного

app.controller('myCtrl', ['$scope', function($scope){
 ...
}])

У меня нет дурацкого ответа, но, возможно, вы можете искать 'функцию (и если вам повезет, вы найдете виновника. Если что-то подобное не работает, исходные карты, вероятно, идти.


Я закончил выборочно комментировать части своего html, пока не определил, где возникла проблема. Оказывается, это была angular -ui-bootstrap проблема.

licensed under cc by-sa 3.0 with attribution.