2017-12-29 5 views
0

Ich habe ein Wrapper-Problem vor jeder Anfrage (fügen Sie eine Kopfzeile mit dem Wert X-CSRF-TOKEN) und Antwort (get eine neue X-CSRF-token Token)

Aber ich stieß auf einen Fehler:

Error: $ injector: unpr 
Unknown Provider 
Unknown provider: $ httpProviderProvider <- $ httpProvider <- HttpPreConfigController <- LoginService 

Berechtigungsmodul:

var appAuth = angular.module("app-auth", ["ngResource", "ngRoute", "ngCookies"]); 

Controller:

appAuth.controller("LoginController", function ($scope, $timeout, $window, $rootScope, LoginService) { 
    $scope.login = function() { 
     LoginService.getUser().then(function (response) { 
      ... 
     }); 
    }; 
}); 

Service:

appAuth.factory("LoginService", function ($resource, $route, $cookieStore, $q, $rootScope, HttpPreConfigController) { 
    var LoginService; 

    LoginService = { 
     getUser: function() { 
      return HttpPreConfigController.get('/rest/user'); 
     } 
    }; 
    return LoginService; 
}); 

und der Wrapper:

appAuth.factory('HttpPreConfigController', ['$injector', '$cookieStore', '$httpProvider', function ($injector, $cookieStore, $httpProvider) { 
    var $http = $injector.get('$http'); 
    $http.defaults.transformRequest.push(function (data, headers) { 
     $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 
     $httpProvider.defaults.xsrfHeaderName = 'X-CSRF-TOKEN'; 
     $httpProvider.defaults.headers.common['X-CSRF-TOKEN'] = $cookieStore.get('X-CSRF-TOKEN'); 
    }); 
    $http.defaults.transformResponse.push(function (data, headers) { 
     $cookieStore.put("X-CSRF-TOKEN", headers('X-CSRF-TOKEN')); 
    }); 
    return $http; 
}]); 

Können Sie diesen Fehler loswerden?

+0

Siehe [AngularJS-Fehlerreferenz - Fehler: $ injector: unpr Unbekannter Provider] (https://docs.angularjs.org/error/$injector/unpr). – georgeawg

Antwort

1

Sie erhalten diesen Fehler, weil Provider nur in die Konfigurationsphase Ihrer App injizierbar sind. Sie sollten also Ihren Code von factory in einen config Block verschieben, damit dies funktioniert. Hoffe, das wird helfen.

Verwandte Themen