javascript - 缩小 httpInterceptor AngularJS $injector 错误

标签 javascript angularjs dependency-injection

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

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

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

最佳答案

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

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

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

或者(如果手动引导):

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

关于javascript - 缩小 httpInterceptor AngularJS $injector 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739214/

相关文章:

java - 带注释 @PostConstruct (javax) 的方法不会调用

c# - 在 ASP.NET Core 3.0 Preview 5 或更高版本中配置 AutoFac

javascript - 如何使用 JQuery 合并两个 UL 以使值交替?

javascript - 将文件传递到 Controller 而不使用表单,

javascript - 注入(inject)服务未定义

javascript - 无法实例化 ng 应用程序

javascript - addEventListener 到 AngularJS 中的简单指令示例

C# 8 默认实现和依赖倒置

javascript - 如何(完全)复制文件但更改文件名?

javascript - 工厂未在 Angular JS 中定义