Я пытаюсь понять, почему мое приложение angular 2 зависает, показывая Загрузка ... при работе в IE 11.
Следуя чьему-то предложению, я попробовал этот плункер, опубликованный кем-то при переполнении стека, как в Chrome, так и в IE 11. Работает нормально в Chrome, но не работает в IE 11. Та же ошибка, застрял при сообщении «Загрузка ...»
Плункер: https://plnkr.co/edit/6zVFbrH5yohwc714gBbk?p=preview
<!DOCTYPE html>
<html>
<head>
<script>document.write('<base href="' + document.location + '" />');</script>
<title>Router Sample</title>
<link rel="stylesheet" href="style.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.34.2/es6-shim.min.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.1/angular2-polyfills.js"></script>
<script src="https://code.angularjs.org/tools/system.js"></script>
<script src="https://code.angularjs.org/tools/typescript.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.1/Rx.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.1/angular2.dev.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.1/http.dev.js"></script>
<script>
System.config({
transpiler: 'typescript',
typescriptOptions: { emitDecoratorMetadata: true },
packages: {'src': {defaultExtension: 'ts'}}
});
System.import('src/boot')
.then(null, console.error.bind(console));
</script>
</head>
<body>
<my-app>loading...</my-app>
</body>
</html>
Кто-нибудь знает, почему IE 11 не запускает приложение angular 2?
Спасибо!
angular
typescript
internet-explorer
Пэт Крушитель Лапланте
источник
источник
Ответы:
Последняя версия
angular
по умолчанию настроена только для вечнозеленых браузеров ...См. Здесь дополнительную информацию о поддержке браузером, а также список предлагаемых полифилов для конкретных браузеров. https://angular.io/guide/browser-support#polyfill-libs
Это означает, что вам нужно вручную включить правильные полифилы, чтобы Angular работал в IE11 и ниже.
Для этого зайдите в
polyfills.ts
(src
по умолчанию в папку) и просто раскомментируйте следующие импортированные файлы:Обратите внимание, что комментарий находится буквально в файле, поэтому его легко найти.
Если у вас по-прежнему возникают проблемы, вы можете понизить рейтинг
target
свойства доes5
в,tsconfig.json
как было@MikeDub
предложено. Это меняет вывод компиляции любыхes6
определений наes5
определения. Например, функции с жирной стрелкой (()=>{}
) будут скомпилированы в анонимные функции (function(){}
). Вы можете найти список поддерживаемых es6 браузеров здесь .Ноты
• В комментариях
@jackOfAll
меня спросили, загружаются ли полифиллы IE11, даже если пользователь работает в вечнозеленом браузере, которому они не нужны. Ответ - да! Включение IE11 polyfills будет ваш polyfill файл из~162KB
к~258KB
состоянию на 8 августа '17. Я попытался решить эту проблему, но в настоящее время это не представляется возможным.• Если вы получаете ошибки в IE10 и ниже, перейдите в вас
package.json
и понижение рейтингаwebpack-dev-server
в2.7.1
частности. Версии выше этой больше не поддерживают «старые» версии IE.источник
У меня была такая же проблема, и ни одно из решений не помогло мне. Вместо этого добавив следующую строку в (домашнюю страницу) .html под
<head>
исправлением.источник
Я столкнулся с этой проблемой сегодня. Я нашел на GitHub решение, которое не требует перехода на более позднюю версию бета-версии.
Добавьте в свой html следующий скрипт:
Это решило проблему для меня. Для получения дополнительной информации вы можете следить за проблемой github здесь: https://github.com/angular/angular/issues/7144
источник
По состоянию на февраль 2017 г.
При использовании проекта Angular-Cli все строки в
polyfills.ts
файле уже были раскомментированы, поэтому все полифиллы уже использовались.Я нашел здесь это решение, чтобы исправить свою проблему.
Подводя итог приведенной выше ссылке, IE не поддерживает функции лямбда-стрелок / жирных стрелок, которые являются особенностью es6 . ( Это если polyfills.ts у вас не работает ).
Решение : вам нужно настроить таргетинг на es5, чтобы он работал в любых версиях IE, поддержка этого была только в новом браузере Edge от Microsoft.
Это находится в
src/tsconfig.json
:источник
.ts
файлы с использования жирной стрелки на анонимные функции. Я думаю, что вы должны вырезать цитату из этой ссылки о том, чем отличается вывод компилятора, если вы измените цель сценария ecma, что отныне смягчает проблему.источник
Для меня с iexplorer 11 и Angular 2 я исправил все вышеперечисленные проблемы, выполнив 2 вещи:
в index.html добавьте:
в src \ polyfills.ts раскомментируйте:
источник
ERROR Error: Uncaught (in promise): TypeError: Object doesn't support property or method 'setPrototypeOf' at EmptyError (http://localhost:4200/vendor.js:102653:9)
Установите npm Pacakages Обратите внимание, что в комментариях есть несколько команд установки npm. Если вы используете раннюю версию Angular CLI, может быть и третья. Для Angular CLI версий 7, 6 и 1.7 вам необходимо запустить:
npm install --save classlist.js
npm install --save web-animations-js
теперь откройте IE, визуализируйте свое приложение и проверьте :)
источник
По состоянию на сентябрь 2017 года (версия узла = v6.11.3, версия npm = 3.10.10) у меня сработало следующее (спасибо @Zze):
Отредактируйте
polyfills.ts
и раскомментируйте импорт, необходимый для IE11.Точнее, отредактируйте
polyfills.ts
(src
по умолчанию в папке) и просто раскомментируйте все строки, необходимые для IE11 (комментарии внутри файла объясняют, какой именно импорт необходим для запуска в IE11).Небольшое предупреждение: будьте внимательны, раскомментируя строки для
classlist.js
иweb-animations-js
. Каждая из этих прокомментированных строк имеет определенный комментарий: вы должны запустить связанные команды npm, прежде чем раскомментировать их, иначе обработка polyfills.ts будет прервана.В качестве объяснения, полифиллы - это фрагменты кода, которые реализуют функцию в веб-браузере, которая ее не поддерживает. Вот почему в конфигурации polyfills.ts по умолчанию активен только минимальный набор импорта (потому что он нацелен на так называемые «вечнозеленые» браузеры; последние версии браузеров, которые обновляются автоматически ).
источник
РЕДАКТИРОВАТЬ 2018/05/15 : этого можно достичь с помощью метатега ; добавьте этот тег в свой index.html и не обращайте внимания на это сообщение.
Это не полный ответ на вопрос (технический ответ см. В ответе @Zze выше ), но есть важный шаг, который необходимо добавить:
РЕЖИМ СОВМЕСТИМОСТИ
Даже при наличии соответствующих полифиллов по-прежнему возникают проблемы с запуском приложений Angular 2+, использующих полифилы в IE11. Если вы запускаете сайт за пределами узла интрасети (т. Е. Если вы тестируете его на http: // localhost или другом сопоставленном локальном доменном имени), вы должны перейти в настройки просмотра в режиме совместимости и снять флажок «Отображать сайты интрасети в режиме совместимости», поскольку представление совместимости IE11 нарушает некоторые соглашения, включенные в полифилы ES5 для Angular.
источник
У меня есть приложение Angular4, даже у меня оно не работало в браузере IE11, я внес следующие изменения, теперь оно работает правильно. Просто добавьте код ниже в файл index.html
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Просто вам нужно раскомментировать эти строки ниже из файла polyfills.ts
Эти 2 шага решат вашу проблему, дайте мне знать, если что-нибудь будет там. Спасибо!!!
источник
Если у вас все еще есть проблемы с тем, что не все функции JavaScript работают, добавьте эту строку в свои полифиллы. Он исправляет отсутствующий метод значений:
И эта строка исправляет отсутствующий метод include:
источник
У меня была такая же проблема, если вы включили отображение сайтов интрасети в режиме совместимости, polyfills.ts не будет работать, вам все равно нужно добавить следующую строку, как было сказано.
источник
изменения
tsconfig.json
решил мою проблему
источник
Что сработало для меня, так это то, что я выполнил следующие шаги, чтобы улучшить производительность моего приложения в IE 11 1.) В файле Index.html добавьте следующие CDN
2.) В файле polyfills.ts добавьте следующий импорт:
источник
источник
Если ни одно из других решений у вас не работает, стоит изучить источник проблемы. Возможно, модуль npm напрямую вставляет код ES6, который невозможно передать.
В моем случае у меня был
SCRIPT1002: синтаксическая ошибка vendor.js (114536,27) в следующей строке:
Я поискал в папке node_modules и нашел, из какого файла пришла строка. Оказалось, что виновником был punycode.js. который в своей версии 2.1.0 напрямую использует ES6.
После того, как я понизил его до версии 1.4.1, использующей ES5, проблема была решена.
источник
Как решить эту проблему в Angular8
polyfills.ts раскомментируйте,
import 'classlist.js';
аimport 'web-animations-js';
затем установите две зависимости, используяnpm install --save classlist.js
иnpm install --save web-animations-js
.обновить
tsconfig.json
с"target":"es5",
затем
ng serve
запустите приложение и откройте в IE, оно будет работатьисточник
Раскомментируйте раздел IE в src / polyfill.js,
/ ** IE10 и IE11 требуют следующего для поддержки NgClass в элементах SVG * /
import 'classlist.js';
Если возникла ошибка сборки для отсутствующего пакета, тогда
npm install classlist.js - сохранить точный
Обязательно укажите строку ниже, чтобы установить режим документа IE по умолчанию. В противном случае он откроется в версии 7.
источник
Я пробовал все решения в этом потоке, а также кучу других, но безуспешно. В конечном итоге я решил это исправить, обновив каждый пакет в моем проекте, включая ГЛАВНЫЕ изменения версии. Так:
Вот и все. Хотел бы я точно определить, какая библиотека была виновата. Фактическая ошибка, которую я получал, была «Синтаксическая ошибка» в vendor.js в Angular 6.
источник
Angular 9 из коробки теперь должен работать абсолютно нормально в IE11.
Я попробовал все перечисленные здесь предложения, и ни одно из них не сработало. Однако мне удалось отследить его до конкретной библиотеки, в которую я импортировал
app.module
(ZXingScannerModule
если быть точным). Если ваше приложение не работает в IE11 на первой странице, попробуйте удалить библиотеки по одной и проверьте в IE11 - он был полностью пропущен во всех моих предупреждениях об ошибках сборки. Если вы обнаружите, что это так, рассмотрите возможность разделения области вашего сайта, которая использует эту библиотеку, в качестве модуля с отложенной загрузкой.источник