我有一个现有的Angular应用程序,可以在Chrome中运行,但是在Internet Explorer上(显然)无法运行。这是怎么回事:
我安装的几个NPM模块带有不同的发行版。因此,例如,kendo-angular-charts
下的文件夹结构如下:
- dist
|- cdn
|- es
|- es2015
|- npm
|- systemjs
当IE中的网站中断时,是由于es2015\common\configuration.service.js
中的以下声明:
export class Change {
constructor(key, value) {
this.key = key;
this.value = value;
}
}
它中断(无效的语法错误),因为ES2015类为not supported in Internet Explorer。但是es
文件夹中也有一个完全有效的ES5版本的文件。
那我该怎么用呢?
我已经检查了angular.json
和package.json
上看似相关但找不到任何内容的选项。
答案 0 :(得分:0)
请参阅Angular浏览器支持文档(https://angular.io/guide/browser-support#enabling-polyfills)-无需导入不同版本的特定软件包。如果您使用的是Angular CLI,则只需编辑src/polyfills.ts
文件,然后取消注释浏览器polyfill。
如果您不使用Angular CLI,则可以使用NPM导入core-js并导入相关的polyfills(https://www.npmjs.com/package/core-js)。
答案 1 :(得分:0)
有没有找到答案。我在网格上遇到同样的问题。它在几周前工作,现在却没有。我无法确定哪些更改导致使用es2015 vs es库。有特定的core-js polyfill可以控制吗?
答案 2 :(得分:0)
指定要在编译器输出中使用的JavaScript方言的正确方法是target
中的tsconfig.json
属性。在我们的情况下,我们需要将其值设置为es5
。
这仅适用于您的代码,不适用于导入的软件包。
此外,大多数导入通常只指定软件包名称,但是您也应该寻找专门针对错误版本的导入。在我们的例子中,我们在@progress/kendo-angular-charts/dist/es2015
下有一个导入,这就是问题的根源。