我设置了webpack + babel config
webpack.config.js
...
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
...
.babelrc
{
"plugins": ["lodash", "transform-object-rest-spread"],
"presets": [
["env", {
"targets": [
"> 4%",
"ie 11",
"safari 8"
]
}],
"react",
"react-optimize"
],
"env": {
"test": {
"presets": ["es2015", "react"]
}
}
}
在Google Chrome中一切正常,但在IE 11i中有错误
对象不支持属性或方法'分配'
答案 0 :(得分:5)
您还需要添加对象分配变换 查看https://babeljs.io/docs/plugins/transform-object-assign/
另请注意,最佳做法是包含polyfill。 MDN通常为ES2015功能提供polyfill代码。查看https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
记录是:
if (typeof Object.assign != 'function') {
Object.assign = function(target, varArgs) { // .length of function is 2
'use strict';
if (target == null) { // TypeError if undefined or null
throw new TypeError('Cannot convert undefined or null to object');
}
var to = Object(target);
for (var index = 1; index < arguments.length; index++) {
var nextSource = arguments[index];
if (nextSource != null) { // Skip over if undefined or null
for (var nextKey in nextSource) {
// Avoid bugs when hasOwnProperty is shadowed
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
to[nextKey] = nextSource[nextKey];
}
}
}
}
return to;
};
}
您希望在您的应用中将此代码包含在不支持Object.assign的浏览器中。上面提到的Babel转换插件在构建应用程序而不是库时也推荐了这种方法。
答案 1 :(得分:0)
看起来babel编译不起作用。 Object.assign是ECMAScript 2015功能,chrome支持它而无需编译。