Javascript 尝试使用angularjs拦截器时出错未捕获获取无法调用方法';推动';未定义的
我使用的是Angularjs 1.2.0rc1。我一整天都在努力让角截击机工作。我已经把问题缩小到$httpProvider.interceptors.push似乎没有定义,我不知道为什么,其他一切都正常工作 以下是示例代码:Javascript 尝试使用angularjs拦截器时出错未捕获获取无法调用方法';推动';未定义的,javascript,angularjs,frontend,Javascript,Angularjs,Frontend,我使用的是Angularjs 1.2.0rc1。我一整天都在努力让角截击机工作。我已经把问题缩小到$httpProvider.interceptors.push似乎没有定义,我不知道为什么,其他一切都正常工作 以下是示例代码: services.factory('testInterceptor', function ($q) { return { 'response': function(response) { console.log(response); retur
services.factory('testInterceptor', function ($q) {
return {
'response': function(response) {
console.log(response);
return response || $q.when(response);
},
'responseError': function(rejection) {
console.log(rejection);
return $q.reject(rejection);
}
};
});
在module.config
中,我有以下代码
$httpProvider.interceptors.push('testInterceptor');
如果我删除上面的代码,应用程序工作正常,但是如果它存在,我会在控制台上不断收到这个错误
未捕获的TypeError:无法从调用未定义的方法“push”
我的模块。”
myModule
是模块的名称
请注意,根据我的调查,“$httpProvider.interceptors”似乎没有定义,我不知道为什么,任何见解都会有所帮助。
非常感谢您提供的任何帮助/提示。您的配置如下所示吗
myModule.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('testInterceptor');
}]);
我使用拦截器,但内联导致以下代码:
myModule.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(function($q) {
return {
// optional method
'request': function(config) {
return config || $q.when(config);
},
// optional method
'requestError': function(rejection) {
return $q.reject(rejection);
},
// optional method
'response': function(response) {
return response || $q.when(response);
},
// optional method
'responseError': function(rejection) {
return $q.reject(rejection);
}
}
})
}]);
但我似乎从未遇到requestError或responseError,即使服务器抛出500个错误,但这看起来像是另一个问题。希望此代码示例对您有所帮助。您能提供更多有关如何将模块组合在一起的信息吗?我做了一个小测试,一切正常:嗨,乔纳斯,非常感谢你的回答,我设法解决了它。问题是grunt build使用google CDN作为angularjs框架,它加载了angularjs的旧版本,具体来说是Angular1.0.7。@EricK你的建议对我也很有效。