角加babel的传播算子

问题描述

我有一个使用CLI创建的角度应用程序。该应用程序包含实用程序方法(utils.js)的JavaScript文件。我用TypeScript编写的Angular组件调用此JavaScript实用工具文件中的函数。 “ utils.js”中的几种方法包含ES6传播运算符,即

return {
   ...myItem
}

当我在所有浏览器中运行我的应用程序时,IE和Edge都不会呈现该页面,并且控制台会显示

SCRIPT5022: SCRIPT5022: Expected identifier,string or number

我的浏览器列表说包含IE11

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

我如何才能将JavaScript代码转换为可在IE / Edge中运行的ES5代码

据我了解,“ tsconfig.json”中的设置适用于TypeScript文件,因此不适用于.js文件

由于该应用程序是使用CLI创建的,因此没有WebPack配置文件可供我为.js文件添加babel。

我尝试过的事情

Core-js / regenerator运行时

我尝试将以下内容添加到'utils.js'文件的顶部

import 'core-js'; // replacement for babel-polyfill in babel 7.4 & above
import 'regenerator-runtime/runtime'; // replacement for babel-polyfill in babel 7.4 & above

并将依赖项添加到package.json并安装它们

"core-js": "~3.6.5","regenerator-runtime": "~0.13.5",

这没什么

tsconfig.json

我为目标尝试了“ es5”和“ es2015”,但这没什么区别

polyfills.js

我尝试将所有core-js导入polyfills.js文件中,但这没什么区别。

我也没有评论“ import'classlist.js';”并安装了该库,没有任何区别。

更新

我重写了utils.json文件,使其没有传播运算符。该应用程序现在在Edge中呈现。

但是它仍然无法在IE中呈现。使用我的Angular SSR应用程序的全部3个进行的进一步调查显示,这些应用程序未执行任何客户端渲染,这将是另一个堆栈溢出问题的主题

解决方法

通常,您会在Angular CLI的polyfills.ts目录中创建的src文件中包含您的polyfills

IE缺少很多可与Angular一起使用的polyfill。至少,您将需要:

import 'core-js/features/symbol';
import 'core-js/features/object';
import 'core-js/features/function';
import 'core-js/features/parse-int';
import 'core-js/features/parse-float';
import 'core-js/features/number';
import 'core-js/features/math';
import 'core-js/features/string';
import 'core-js/features/date';
import 'core-js/features/array';
import 'core-js/features/regexp';
import 'core-js/features/map';
import 'core-js/features/weak-map';
import 'core-js/features/set';

来自core-js 3.6.5