缩小httpInterceptor AngularJS $ injector错误

时间:2015-02-26 09:55:24

标签: javascript angularjs dependency-injection

当我缩小/混淆/ uglify我的代码时,我的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');
    }]);

我如何正确地注入我的依赖项,或者我错过了什么?这样做很好,而不会缩小我的代码。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您确定这段代码是否会产生错误? (这段代码看起来还不错......)但是这个错误肯定是由于没有使用['dep1', dep2', function(dep1,dep2){...}]语法(或等同于$inject)引起的。

您可以尝试严格的DI模式,以便Angular将在 - 模式(ref here)中报告错误:

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

或(如果手动引导):

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