У меня есть приложение с угловым 1.3.15, которое не работает в Internet Explorer 9, я получаю Unable to get property 'replace' of undefined or null reference
ошибки, которая указывает на этот блок кода в угловом ядре.
Ошибка вызывается, что многое выполняется правильно, но у меня нет идей, что обычно выполняет эта функция и что отсутствует в IE9 для ее работы.
function createInternalInjector(cache, factory) {
function getService(serviceName, caller) {
if (cache.hasOwnProperty(serviceName)) {
if (cache[serviceName] === INSTANTIATING) {
throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
serviceName + ' <- ' + path.join(' <- '));
}
return cache[serviceName];
} else {
try {
path.unshift(serviceName);
cache[serviceName] = INSTANTIATING;
return cache[serviceName] = factory(serviceName, caller);
} catch (err) {
if (cache[serviceName] === INSTANTIATING) {
delete cache[serviceName];
}
throw err;
} finally {
path.shift();
}
}
}
В качестве последней заметки я включил es5-shim и shams, я уже использовал атрибуты data-ng- *, которые я прочитал несколько статей о том, как заставить работать на IE9, но ни одна из них не описывает проблему, подобную этой, Осталось только задать этот вопрос на SO.
Поэтому я нашел проблему, добавив точки останова и отладки до тех пор, пока не найду имя службы, в которую он не мог бы ввести $location
и это было связано с попыткой использовать режим html5:
$locationProvider.html5Mode(true).hashPrefix('!');
Если я прокомментирую это и использую # маршруты, приложение работает, насколько я могу судить, если у кого-то есть идея о том, как использовать html5mode в IE9, я буду отмечать ваш ответ как правильный, поскольку я не хочу отвечать на мои вопросы собственный вопрос.