javascript - IE11-problem Angular CLI-projekt i Angular2(TS), polyfills fungerar inte
Jag använder angular-cli 1.0.0-beta.16 som har polyfills.ts som ser ut så här:
// 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';
Men denna polyfills-fil fungerar inte på IE11 och den fungerar på Chrome, Firefox, EDGE och min main.ts ser ut så här:
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);
Att köra detta på IE11 ger ett felmeddelande om fel på fet pil-uttryck
SCRIPT1002: Syntax error
För minifiedjs på denna position:
function arrayUnion(arr1, arr2) {
return arr1
.concat(arr2.filter(v => arr1.indexOf(v) === -1));
}
och så här ser min tsconfig.json ut
{
"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 så här ser min tsconfig ut
Svar #1
Du riktar dig förmodligen mot es6, vilket kompilerar pilfunktionerna till pilfunktioner:
let fn = () => console.log("hey");
Kompilerar till:
let fn = () => console.log("hey");
Men om du riktar in dig på es5 kompileras det till:
var fn = function () { return console.log("hey"); };
Det verkar som att IE11 (eller någon annan version av Explorer) ännu inte stöder pilfunktioner.
Om du vill stödja det måste du rikta in dig på es5 eller lägre, eftersom det inte finns någon polyfill för pilfunktioner.
