IE11 выпускает проект Angular CLI в Angular2(TS), полифилы не работают

Я использую anugular-cli 1.0.0-beta.16, у которого есть polyfills.ts, который выглядит так:

// This file includes polyfills needed by Angular 2 and is loaded before
// the app. You can add your own extra polyfills to this file.
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/set';
import 'core-js/es6/reflect';

import 'core-js/es7/reflect';
import 'zone.js/dist/zone';

Но этот файл pollyfills не работает на IE11, и он работает на Chrome, Firefox, EDGE и мой main.ts выглядит следующим образом:

import "./polyfills.ts";
import {platformBrowserDynamic} from "@angular/platform-browser-dynamic";
import {enableProdMode} from "@angular/core";
import {environment} from "./environments/environment";
import {AppModule} from "./app/";

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);

Выполнение этого в IE11 приводит к отображению ошибки при ошибке выражения жирной стрелки

SCRIPT1002: Syntax error

Для minifiedjs на этой должности:

function arrayUnion(arr1, arr2) {
    return arr1
        .concat(arr2.filter(v => arr1.indexOf(v) === -1));
}

и вот так выглядит мой tsconfig.json

    {
  "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["es6", "dom"],
    "mapRoot": "./",
    "module": "es6",
    "moduleResolution": "node",
    "outDir": "../dist/out-tsc",
    "sourceMap": true,
    "target": "es5",
    "typeRoots": [
      "../node_modules/@types"
    ]
  }
}

@Cleton вот так выглядит мой tsconfig

1 ответ

Решение

Вы, вероятно, нацелены es6, который компилирует функции со стрелками в функции со стрелками:

let fn = () => console.log("hey");

Компилируется в:

let fn = () => console.log("hey");

Но если вы нацелены es5 он компилируется в:

var fn = function () { return console.log("hey"); };

Кажется, что IE11 (или любая другая версия проводника) пока не поддерживают функции стрелок.
Если вы хотите поддержать его, вы должны быть нацелены es5 или ниже, так как для функций со стрелками нет pollyfil.

Другие вопросы по тегам