Angular CLI如何删除箭头函数?

4

我正尝试在IE11上运行我的代码,但是遇到了箭头函数的问题。我无法弃用它们,并替换为function() {}

看起来它们已经从我的main.js文件中删除了,但是在vendor.js文件中,箭头函数仍然存在。我该如何去除它们?

我有一个浏览器列表,长这样:

> 0.5%
last 2 versions
Firefox ESR
not dead
IE 9-11

我还有一个看起来像这样的tsconfig.json文件:

{
    "compileOnSave": false,
    "compilerOptions": {
        "baseUrl": "./",
        "downlevelIteration": true,
        "importHelpers": true,
        "outDir": "../path/to/folder",
        "sourceMap": true,
        "declaration": false,
        "module": "esnext",
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es5",
        "typeRoots": [
            "node_modules/@types"
        ],
        "lib": [
            "es2017",
            "dom"
        ]
    }
}


我认为你的tsconfig应该目标定位于es2015,然后在构建生产时,它应该生成遗留的es5捆绑包,这些包不包括箭头函数或任何ES6功能。 https://angular.io/guide/deployment#differential-loading - Damian C
@DamianC 这样做会创建一个旧版构建,但是 es6 箭头函数仍然存在于文件中。 - Get Off My Lawn
你能分享一个包含箭头函数的ES5捆绑文件的摘录和文件名吗?另外,你能发布你的angular.json的生产部分吗? - Damian C
你是否使用了包含箭头函数的外部JS库?CLI不会转译JavaScript代码。第三方代码应该处于适当的格式中。此外,您还可以参考这个帖子,将lib设置为"es5", "es6", "dom"来查看是否有效。 - Yu Zhou
是的,第三方代码确实有箭头。 - Get Off My Lawn
显示剩余3条评论
2个回答

1

vendor.js 是 Angular/webpack 生成的文件,它会发生什么变化? - Get Off My Lawn
在大多数情况下,您应该避免像这样对tsconfig进行更改,因为cli会对您的typescript配置做出一些假设。 - Damian C

0

我的一个供应商依赖项“debug”包含箭头函数(view source)。这些依赖关系没有被转译,因此IE11无法解析js文件。

在我的情况下,我将有问题的软件包恢复到旧版本。例如:package.json

"debug": "^3.2.6",

要查找有问题的依赖项,请将您的 Angular 应用程序作为 ES5 运行,并使用 IE11 开发人员工具定位 JavaScript 文件中断的位置。这将为您提供关于它是哪个 npm 包的线索。然后,您可以使用 npm ls 映射包的依赖树。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接