2015-02-26 2 views
1

Когда я минимизирую/обфускацию/уругвай свой код, мой httpInterceptor больше не работает.

я получаю следующее сообщение об ошибке:

Error: error:unpr 
Unknown Provider 

Unknown provider: aProvider <- a 

Мой код со всеми неактуальной вещи удалены:

angular.module("MyApp").factory('sessionChecker', ['$q', '$injector', 
    function ($q, $injector) { 
     var sessionRecoverer = { 
      responseError: function (response) { 
       // Session has expired 
       if (response.status === 401) { 
        var $location = $injector.get('$location'); 
        var $modal = $injector.get('$modal'); 
        $location.path("/login"); 

       } else if (response.status === 500) { 
        var $location = $injector.get('$location'); 
        //Do stuff.. 
       } else if (response.status === 0) { 
        var $modal = $injector.get('$modal'); 
        //Do stuff.. 
       } 
       return $q.reject(response); 
      } 
     }; 
     return sessionRecoverer; 
    }]); 

angular.module("MyApp").config(['$httpProvider', 
    function ($httpProvider) { 
     $httpProvider.interceptors.push('sessionChecker'); 
    }]); 

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

Любая помощь будет оценена по достоинству.

+0

' aProvider' не существует в исходном коде, который вы указали, почему вы используете «инжектор» для инъекций, который может быть введен через конструктор ... –

+0

Ошибка после оценки. – Billy

+0

I не видя, как твой миноискатель делает это, видя, что все выглядит хорошо. –

ответ

2

Вы уверены, что эта часть кода порождает ошибку? (Этот код выглядит нормально для меня ...) Но эта ошибка определенно вызвана не использованием синтаксиса ['dep1', dep2', function(dep1,dep2){...}] (или эквивалентом с $inject).

Вы можете попробовать строгий режим DI, так что Угловая сообщит об ошибке в , не -minified режиме (ref here):

<div ng-app="myApp" ng-strict-di> 

Или (если самонастройки вручную):

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

Я уверен, что это код, который генерирует эту ошибку. Это срабатывает, как только я теряю соединение с моим сервером (т. Е. Вытаскивая интернет-кабель из порта локальной сети), и это происходит именно тогда, когда появляется эта ошибка, что не позволяет выполнить код (показывая модальный). – Billy

+1

Вы используете '$ modal'; вы, вероятно, определяете контроллер, который использует упрощенную схему инъекций. Это во второй части '// Do stuff..' ... –

+0

Ты, мой друг, герой. Вы даже ошибаетесь в коде, который я не публиковал. Приносим извинения за это. Это было именно то, что вы сказали. Я использовал упрощенную инъекцию на $ modal, считая, что в этот момент это не нужно. Познакомьтесь с моим ленивым мозгом. – Billy

Смежные вопросы