AngularJS $httpProvider 错误

AngularJS $httpProvider Error

我正在 AngularJS 中使用 Django API 端点编写 Web 应用程序。当我想对该端点执行 JSON 调用时,我想捕获可能的错误(例如 404 未找到错误)。为此,我使用 $httpProvider.

但是当我 运行 我的应用程序(使用 gulp)时,在控制台中,浏览器显示此错误 "Error: e is undefined"

这是我的工厂代码(基础代码,以后会扩充):

angular.module('qrWebapp').factory('errorInterceptor', function(){
  var errorInterceptor = {
        response: function() {
            console.log('hallo');
        }
  };
  return errorInterceptor;
});

然后我在配置区初始化它:

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

我做错了什么?

乍一看,我没发现你的代码有什么问题。 但是拦截器假定接收 return 值,因此如果您没有 return 任何值作为示例代码,则可能会导致意外问题。

试试下面的代码。

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;
});

希望对您有所帮助。