AngularJS$httpProvider错误

AngularJS$httpProvider错误,angularjs,gulp,angularjs-service,angularjs-factory,angularjs-http,Angularjs,Gulp,Angularjs Service,Angularjs Factory,Angularjs Http,我正在用AngularJS和DjangoAPI端点编写一个web应用程序。当我想对这个端点执行JSON调用时,我想捕获可能的错误(例如404 not found错误)。为此,我使用$httpProvider 但是当我在控制台中运行我的应用程序(使用gulp)时,浏览器会显示此错误“error:e未定义” 这是我的工厂代码(基本代码,将来将对此进行扩展): 我在配置区域初始化它: angular.module('qrWebapp', ['ngResource', 'ui.router', 'ui.

我正在用AngularJS和DjangoAPI端点编写一个web应用程序。当我想对这个端点执行JSON调用时,我想捕获可能的错误(例如404 not found错误)。为此,我使用$httpProvider

但是当我在控制台中运行我的应用程序(使用gulp)时,浏览器会显示此错误“error:e未定义”

这是我的工厂代码(基本代码,将来将对此进行扩展):

我在配置区域初始化它:

angular.module('qrWebapp', ['ngResource', 'ui.router', 'ui.bootstrap'])
.config(function ($stateProvider, $urlRouterProvider, $httpProvider){
    $httpProvider.interceptors.push('errorInterceptor');
});

我做错了什么

在一家农场,我在你的代码中找不到任何错误。 然而,拦截器假定接收返回值,所以若您不将任何值作为示例代码返回,则可能会导致意外问题

请尝试下面的代码

angular.module('qrWebapp').factory('errorInterceptor', function($q){
  var errorInterceptor = {
        response: function(res) {
            console.log(res.status);
            if (res.status !== 200){
                // Normally show some error messages. One of the most simple way is calling alert function.
                console.log(res.status, res.data);
            }
            return $q.reject(res);
        }
  };
  return errorInterceptor;
});

我希望这会对您有所帮助。

您是否正在缩小JavaScript?我在$stateProvider的帮助下,在定义不同状态的地方遗漏了一些代码。但是我不明白你缩小JavaScript是什么意思,对不起……缩小JavaScript意味着删除所有的空白,并在可能的情况下缩短变量名(如“e”)。谷歌。这是Angular中的一个经典问题,您需要使用不同的注入语法(Google that,对不起,我正在打电话)浏览器是否在控制台中显示了
hello
?您是否可以使用Angular.js而不是Angular.min.js,这样我们就可以在错误出现的地方获得正确的错误?它删除了错误,但目前,当我加载页面时,它只是显示一个白色屏幕。但是控制台一直在说“hello”,还有其他方法可以从$http.get()调用中捕获错误吗?我知道您可以使用$http服务中的error函数,但这对我来说并不适用……我很高兴听到错误被删除了。现在您已经捕获了响应函数中的错误。我编辑了我的答案。控制台只显示“hello”,第二个控制台没有输出。log()请检查
res.status
,不要忘记重新加载更新的javascript代码。
angular.module('qrWebapp').factory('errorInterceptor', function($q){
  var errorInterceptor = {
        response: function(res) {
            console.log(res.status);
            if (res.status !== 200){
                // Normally show some error messages. One of the most simple way is calling alert function.
                console.log(res.status, res.data);
            }
            return $q.reject(res);
        }
  };
  return errorInterceptor;
});