SCRIPT1002:语法错误 - IE11 和 Angular
SCRIPT1002: Syntax error - IE11 and Angular
从 IE11 打开 Angular 项目时出现以下错误:
SCRIPT1002: Syntax error
vendor.js (224520,1)
产生错误的行 (224520
) 如下所示:
class PreventableEvent {
constructor() {
this.prevented = false;
}
...
所以,问题很清楚了。打字稿尚未完全转译。现在我卡住了,因为我不知道该如何解决。
包含非转译输出的文件位于 ./node_modules/@progress/kendo-angular-layout/dist/es2015/tabstrip/tabstrip-events.js
。
所以,我觉得我需要以某种方式使用不同版本的文件(如果某处存在这样的文件)或获取 Angular 来转换文件或做一些完全不同的事情。
能否通过建议我可以采取的步骤来解决上述问题,帮助我在 IE11 中制作我的应用程序 运行?
此外,我刚刚检查过 Chrome 是否有相同的代码(我的意思是 vendor.js
的 224520
行中的 class...
。它工作得很好。我相信这是因为 Chrome 支持 class
关键字。
JavaScriptclass不支持IE浏览器,可以查看JavaScript Classes Browser compatibility.
在angular应用程序中,如果我们想定义一个class,我们可以使用typescript创建一个模型class。
例如在src/app文件夹中创建一个英雄class,命名为hero.ts。
代码在src/app/hero.ts
export class Hero {
id: number;
name: string;
}
然后在组件class中,我们可以导入英雄class,并使用以下代码使用英雄class:
import { Component, OnInit } from '@angular/core';
import { Hero } from '../hero';
@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
hero: Hero = {
id: 1,
name: 'Windstorm'
};
constructor() { }
ngOnInit() {
}
}
更多关于angular申请的详细信息,请查看angular document。
此外,对于Angular应用程序,如果Angular版本低于或等于Angular7,请检查polyfill.ts文件,确保取消注释IE 浏览器的相关 polyfill,像这样:
/** 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';
如果您使用的是 angular 8+,请检查 this link 以将应用程序配置为 运行 es5 模式。
当我直接使用来自 :
的 SelectedEvent 时,我遇到了类似的问题
import { SelectEvent } from '@progress/kendo-angular-layout/dist/**es2015**/tabstrip/tabstrip-events';
我弄错了,因为IE 11不支持es2015
我应该使用来自不同路径的对象:
from '@progress/kendo-angular-layout/dist/**es**/tabstrip/tabstrip-events';
或者让angular自动选择你应该选择的版本。
from '@progress/kendo-angular-layout/';
请检查您是否使用了正确的es版本。
从 IE11 打开 Angular 项目时出现以下错误:
SCRIPT1002: Syntax error
vendor.js (224520,1)
产生错误的行 (224520
) 如下所示:
class PreventableEvent {
constructor() {
this.prevented = false;
}
...
所以,问题很清楚了。打字稿尚未完全转译。现在我卡住了,因为我不知道该如何解决。
包含非转译输出的文件位于 ./node_modules/@progress/kendo-angular-layout/dist/es2015/tabstrip/tabstrip-events.js
。
所以,我觉得我需要以某种方式使用不同版本的文件(如果某处存在这样的文件)或获取 Angular 来转换文件或做一些完全不同的事情。
能否通过建议我可以采取的步骤来解决上述问题,帮助我在 IE11 中制作我的应用程序 运行?
此外,我刚刚检查过 Chrome 是否有相同的代码(我的意思是 vendor.js
的 224520
行中的 class...
。它工作得很好。我相信这是因为 Chrome 支持 class
关键字。
JavaScriptclass不支持IE浏览器,可以查看JavaScript Classes Browser compatibility.
在angular应用程序中,如果我们想定义一个class,我们可以使用typescript创建一个模型class。
例如在src/app文件夹中创建一个英雄class,命名为hero.ts。
代码在src/app/hero.ts
export class Hero {
id: number;
name: string;
}
然后在组件class中,我们可以导入英雄class,并使用以下代码使用英雄class:
import { Component, OnInit } from '@angular/core';
import { Hero } from '../hero';
@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
hero: Hero = {
id: 1,
name: 'Windstorm'
};
constructor() { }
ngOnInit() {
}
}
更多关于angular申请的详细信息,请查看angular document。
此外,对于Angular应用程序,如果Angular版本低于或等于Angular7,请检查polyfill.ts文件,确保取消注释IE 浏览器的相关 polyfill,像这样:
/** 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';
如果您使用的是 angular 8+,请检查 this link 以将应用程序配置为 运行 es5 模式。
当我直接使用来自 :
的 SelectedEvent 时,我遇到了类似的问题import { SelectEvent } from '@progress/kendo-angular-layout/dist/**es2015**/tabstrip/tabstrip-events';
我弄错了,因为IE 11不支持es2015
我应该使用来自不同路径的对象:
from '@progress/kendo-angular-layout/dist/**es**/tabstrip/tabstrip-events';
或者让angular自动选择你应该选择的版本。
from '@progress/kendo-angular-layout/';
请检查您是否使用了正确的es版本。