Вход

Просмотр полной версии : IE и spread operator


s24344
19.07.2018, 13:24
Ребята, подскажите пожалуйста. 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$/
}
]
}
}
}

destus
19.07.2018, 14:58
s24344,
babel-polyfill еще надо для Object.assign

s24344
23.07.2018, 08:28
Спасибо. А Вы не могли бы более подробно подсказать куда его подключить?

destus
23.07.2018, 12:12
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 - всё работает. Что именно у вас пишет?

s24344
24.07.2018, 09:53
Object doesn't support property or method 'from'
И именно в строке, где используется spread.

destus
24.07.2018, 10:24
Код покажите, как вы spread используете, какой ie?

s24344
24.07.2018, 11:22
IE11
this.primaryLinks = [...this.el.querySelectorAll('[data-nav-ref="primary-link"]')];
Предварительно ещё раз проверил, ошибка именно на этой строке.

destus
24.07.2018, 11:57
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"]'));

s24344
24.07.2018, 12:05
Спасибо за помощь.