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';