IE11 在 Angular2(TS) 中发布 Angular CLI 项目,polyfills 不工作
IE11 issue Angular CLI project in Angular2(TS), polyfills are notworking
我正在使用 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 的样子
您的目标可能是 es6
,它将箭头函数编译为箭头函数:
let fn = () => console.log("hey");
编译为:
let fn = () => console.log("hey");
但是如果你以 es5
为目标,它会编译为:
var fn = function () { return console.log("hey"); };
似乎 IE11
(或任何其他版本的资源管理器)do not yet support arrow functions。
如果你想支持它,你必须以 es5
或以下为目标,因为箭头函数没有 pollyfil。
我正在使用 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 的样子
您的目标可能是 es6
,它将箭头函数编译为箭头函数:
let fn = () => console.log("hey");
编译为:
let fn = () => console.log("hey");
但是如果你以 es5
为目标,它会编译为:
var fn = function () { return console.log("hey"); };
似乎 IE11
(或任何其他版本的资源管理器)do not yet support arrow functions。
如果你想支持它,你必须以 es5
或以下为目标,因为箭头函数没有 pollyfil。