Javascript-форум (https://javascript.ru/forum/)
-   Сборка проекта, утилиты (https://javascript.ru/forum/server-tools/)
-   -   IE и spread operator (https://javascript.ru/forum/server-tools/74539-ie-i-spread-operator.html)

s24344 19.07.2018 13:24

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$/
        }
      ]
    }
  }
}

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.querySelectorAll('[data-nav-ref="primary-link"]'));

s24344 24.07.2018 12:05

Спасибо за помощь.


Часовой пояс GMT +3, время: 10:18.