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.querySelectorAll('[data-nav-ref="primary-link"]'));
|
Спасибо за помощь.
|
| Часовой пояс GMT +3, время: 13:19. |