最小化httpInterceptor AngularJS$注入器错误

Minifying httpInterceptor AngularJS $injector error

本文关键字:注入器 错误 AngularJS httpInterceptor 最小化      更新时间:2024-05-22

当我缩小/模糊处理/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等效的语法)造成的。

您可以尝试严格的DI模式,这样Angular将在缩小模式下报告错误(参考此处):

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

或者(如果手动引导):

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