指定要在Angular中使用的NPM模块平台

时间:2018-12-20 12:35:55

标签: angular npm node-modules kendo-ui-angular2

我有一个现有的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.jsonpackage.json上看似相关但找不到任何内容的选项。

3 个答案:

答案 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下有一个导入,这就是问题的根源。