我正在恢复用AngularJS for Foundation编写的旧项目。我决定添加HTTPS。我已经获得了正确保护的域名,并且我已经查找/替换了所有http:https:
但是,它现在在加载页面时在Chrome控制台中显示此错误:
foundation.js:5346 Uncaught Error: [$injector:unpr] Unknown provider: $httpProvider <- $http <- $templateFactory <- $view <- $state
at foundation.js:5346
at foundation.js:9659
at Object.getService [as get] (foundation.js:9807)
at foundation.js:9664
at getService (foundation.js:9807)
at invoke (foundation.js:9839)
at Object.instantiate (foundation.js:9856)
at Object.<anonymous> (foundation.js:9716)
at Object.invoke (foundation.js:9848)
at Object.enforcedReturnValue [as $get] (foundation.js:9700)
知道为什么吗?我的猜测是$ http调用,但angular并没有专门为https提供一些东西。同样,只有当我强制域使用https时才会出现此错误。
这里的基础.js:5346:
return new ErrorConstructor(message);
:9659-9664
}
return {
invoke: invoke,
instantiate: instantiate,
get: getService,
:9700-9716
var result = instanceInjector.invoke(factory, this);
if (isUndefined(result)) {
throw $injectorMinErr('undef', "Provider '{0}' must return a value from $get factory method.", name);
}
return result;
};
}
function factory(name, factoryFn, enforce) {
return provider(name, {
$get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
});
}
function service(name, constructor) {
return factory(name, ['$injector', function($injector) {
return $injector.instantiate(constructor);
:9807-9856
return cache[serviceName] = factory(serviceName, caller);
} catch (err) {
if (cache[serviceName] === INSTANTIATING) {
delete cache[serviceName];
}
throw err;
} finally {
path.shift();
}
}
}
function invoke(fn, self, locals, serviceName) {
if (typeof locals === 'string') {
serviceName = locals;
locals = null;
}
var args = [],
$inject = createInjector.$$annotate(fn, strictDi, serviceName),
length, i,
key;
for (i = 0, length = $inject.length; i < length; i++) {
key = $inject[i];
if (typeof key !== 'string') {
throw $injectorMinErr('itkn',
'Incorrect injection token! Expected service name as string, got {0}', key);
}
args.push(
locals && locals.hasOwnProperty(key)
? locals[key]
: getService(key, serviceName)
);
}
if (isArray(fn)) {
fn = fn[length];
}
// http://jsperf.com/angularjs-invoke-apply-vs-switch
// #5388
return fn.apply(self, args);
}
function instantiate(Type, locals, serviceName) {
// Check if Type is annotated and use just the given function at n-1 as parameter
// e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
// Object creation: http://jsperf.com/create-constructor/2
var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null);
var returnedValue = invoke(Type, instance, locals, serviceName);
更新:嗯,这很容易。自从我为此工作以来已经有一段时间了。它是100%foundation.js,我的自定义代码在其他地方。我将基础.js替换为原始版本,没有用https替换http,这一切都运行良好。