缩小 httpInterceptor AngularJS $injector 错误

Minifying httpInterceptor AngularJS $injector error

当我 minify/obfuscate/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');
    }]);

我如何正确地注入我的依赖项,或者我是否遗漏了什么?这在不缩小我的代码的情况下工作正常。

如有任何帮助,我们将不胜感激。

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

你可以试试strict DI模式,这样Angular在-minified模式(ref here)下会报错:

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

或者(如果手动引导):

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