Просмотр полной версии : IE и spread operator
Ребята, подскажите пожалуйста. IE ругается на spread operator.
Мои настройки:
package.json
"babel-core": "^6.26.3",
"babel-loader": "^7.1.2",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-preset-env": "1.6.1",
.babelrc
{
"presets": [
"env"
],
"plugins": [
"transform-object-rest-spread"
]
}
webpack.config.js
module.exports = function () {
return {
module: {
rules: [
{
loader: 'babel-loader',
test: /\.js$/
}
]
}
}
}
s24344,
babel-polyfill еще надо для Object.assign
Спасибо. А Вы не могли бы более подробно подсказать куда его подключить?
s24344,
Оказывается babel-polyfill совсем необязателен, потому что object spread переписывается в Object.assign, а если его не поддерживает браузер, то вот в такую функцию
function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
Проверил с вашим конфигом в IE11 - всё работает. Что именно у вас пишет?
Object doesn't support property or method 'from'
И именно в строке, где используется spread.
Код покажите, как вы spread используете, какой ie?
IE11
this.primaryLinks = [...this.el.querySelectorAll('[data-nav-ref="primary-link"]')];
Предварительно ещё раз проверил, ошибка именно на этой строке.
s24344,
Дело тут не в object spread. Его тут вообще нет. Дело в том, что ваша конструкция переписывается в Array.from(this.el.querySelectorAll('[data-nav-ref="primary-link"]')), что в IE конечно же не поддерживается. Поэтому нужен babel-polyfill. Если не хочется его подключать, то можно переписать ваш код следующим образом
this.primaryLinks = Array.prototype.slice.call(this.el.querySelectorAl l('[data-nav-ref="primary-link"]'));
vBulletin® v3.6.7, Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot