Ich verwende ng-strict-di, um Abhängigkeitsinjektionsprobleme aufzudecken. Ich bekomme einen etwas komischen Fehler in Angular 1.6, wenn ich versuche, den $ httpd abzufangen. Mein Code ist dies:AngularJS explizite Annotation und kann nicht im strikten Modus aufgerufen werden
app.config(['$httpProvider',
function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
var access_token = 'abc123';
$httpProvider.interceptors.push(function($q) {
return {
'request' : function(config) {
if(config.url.indexOf('htm', config.url.length - 3) === -1 && config.url.indexOf('html', config.url.length - 4) === -1) {
config.url = config.url + '?access_token=' + encodeURIComponent(access_token);
}
return config;
}
};
});
}]);
Der Fehler, was geschieht, ist dies:
Uncaught Error: [$injector:strictdi] function($q) is not using explicit annotation and cannot be invoked in strict mode
http://errors.angularjs.org/1.6.1/$injector/strictdi?p0=function(%24q)
at angular-1.4.3.js:68
at Function.annotate [as $$annotate] (angular-1.4.3.js:4072)
at injectionArgs (angular-1.4.3.js:4799)
at Object.invoke (angular-1.4.3.js:4834)
at angular-1.4.3.js:11241
at forEach (angular-1.4.3.js:357)
at $HttpProvider.$get (angular-1.4.3.js:11239)
at Object.invoke (angular-1.4.3.js:4842)
at angular-1.4.3.js:4636
at getService (angular-1.4.3.js:4783)
Von meinem Verständnis, $ q sollte nicht festgelegt werden müssen, weil die Funktion definiert ist. Warum verursacht das $ q einen Fehler und wie kann man das beheben?