我们正在使用webpack和babel-core 5.8.25
编写应用程序。
在某个时间点,会发生这种情况:
someArray.map(item => {
const updatedItem = Object.assign({}, item); // silently fails here... doesn't even continue the code
updatedItem.prop = 'something cool';
});
这显然是在点击浏览器之前编译的。它适用于最新版本的Chrome和最新版本的iOS Safari,但在Safari 8.0.7
中,它无声地失败(没有错误抛出......只是没有超过该行)。
然而,这可以按预期工作(使用lodash):
someArray.map(item => {
const updatedItem = _.extend({}, item); // the important part
updatedItem.prop = 'something cool';
});
有什么想法吗?我尝试在网上闲聊这个,但无济于事。
答案 0 :(得分:8)
Object.assign
适用于Chrome,因为Chrome本机支持它。 babel-loader
本身只将ES6语法转换为ES5语法,它无法使ES6库功能可用。使用Webpack最简单的方法是从
entry: 'app.js'
到
entry: ['babel-core/polyfill', 'app.js']
// Or with Babel 6:
entry: ['babel-polyfill', 'app.js']
这样Webpack也会在执行您的应用程序之前捆绑并运行polyfill。 Babel提供/polyfill
作为加载垃圾填埋场的简单方法,但它是可选的,因为不是每个人都想使用它,并且因为有许多可用的填充物和Babel使用的填充物,core-js
只是其中之一许多。