Angular ошибка 4 в IE11
У меня есть проект Angular 4, который успешно работает в Chrome.
Однако он не загружается на IE11 со следующей ошибкой в polyfills.bundle.js(я использую команду "ng build --env = prod" для сборки сайта):
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
var f = ctx(fn, that, entries ? 2 : 1);
var index = 0;
var length, step, iterator, result;
if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
iterFn здесь undefined, поэтому возникает ошибка.
Просьба сообщить.
Ответы
Ответ 1
Для лучшей поддержки IE11 вам нужно добавить некоторые импортные товары es6 исключительно на свои полисы. Список выглядит следующим образом:
/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
Ответ 2
Поскольку @Sumit ответил, нужно добавить эти импорта в файл polyfill.ts:
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
Кроме того, вам нужно импортировать отражение API:
/** IE10 and IE11 requires the following for the Reflect API. */
import 'core-js/es6/reflect';
/** Evergreen browsers require these. **/
// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators),you
//can remove.
import 'core-js/es7/reflect';
Кроме того, если вы используете анимацию материала Angular в своем проекте, необходимо импортировать веб-анимацию, чтобы угловой материал работал правильно в IE.
import 'web-animations-js'; // Run 'npm install --save web-animations-js'.
И последняя, но не менее важная библиотека для правильной работы вашего Angular-проекта в IE:
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
import 'classlist.js'; // Run 'npm install --save classlist.js'
,
Ответ 3
У меня была та же ошибка, и класс массива был необходим для этой конкретной ошибки. Ради того, чтобы мои библиотеки были меньше, я просто импортировал класс массива. После этого я получил другую ошибку, которая требовала использования класса string, который часто используется, поэтому я бы начал с того, что привожу эти два. Я немного минималист, поэтому я не хотел приводить других, пока не понадобится.
import 'core-js/es6/array';
import 'core-js/es6/string';