我知道这个问题已被讨论了十亿次,但似乎我在这里找到的解决方案都没有帮助我。
这就是我的 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'。
答案 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(),
})
它似乎正常工作