IE11中的Object.assign()与Angular2

时间:2017-10-26 10:34:21

标签: javascript angular typescript internet-explorer-11 polyfills

我知道这个问题已被讨论了十亿次,但似乎我在这里找到的解决方案都没有帮助我。

这就是我的 polyfills.browser.ts 现在的样子:

import 'ie-shim';
import 'core-js/es7/reflect';

import 'reflect-metadata';
import 'zone.js/dist/zone';

如前所述,我尝试了不同的方法来解决这个问题。

我尝试添加默认情况下取消注释的所有导入:

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/set';

我尝试过使用

import "core-js/client/shim";

还有

import 'mdn-polyfills/Object.assign';

import 'core-js';

所有这些都被添加到polyfills.browser.ts

的顶部

似乎没有任何帮助,我继续对象不支持IE11中的属性或方法'assign'

2 个答案:

答案 0 :(得分:3)

Object.assign是ES2015,并且由polyfill覆盖:

import 'core-js/es6/object';

或者更广泛的ES2015填充剂:

import 'core-js/es6';

为什么最好在Angular应用程序中列出ES2015 polyfill而不是导入core-js/es6,原因是core-js/es6/promise polyfill已被Zone.js覆盖并可能导致问题,

如果这不起作用,

  

对象不支持属性或方法'assign'

发生

错误,这意味着未在浏览器中加载polyfills包,或者在加载Object.assign包之前评估出现polyfills的一段代码。

答案 1 :(得分:0)

即使在IE11上使用polyfill我也有同样的问题,但不是每次都这样。问题是有时主要脚本是在polyfill之前加载的,所以我在webpack配置中做了以下更改:

       new CommonsChunkPlugin({
-        name: 'polyfills',
-        chunks: ['polyfills']
+        name: ['polyfills', 'main'].reverse(),
       })

现在只有:

new CommonsChunkPlugin({
  name: ['polyfills', 'main'].reverse(),
})

它似乎正常工作