Object.assign() в надстройке в приложении Ember вызывает проблемы в IE11

У меня есть приложение Ember, в котором используется несколько надстроек сторонних разработчиков. Одно из этих дополнений использует Object.assign(), что вызывает проблемы в IE11, в частности ошибку

Ошибка: объект не поддерживает свойство или метод 'assign'

Я знаю, почему это происходит, но я относительно новичок в Ember и не знаю, как лучше всего справиться/исправить это. Основываясь на моих исследованиях, некоторые варианты:

Вариант 1: используйте полифиллы (?)

Я думаю, что могут быть какие-то дополнительные библиотеки, которые я могу установить, или опции в Babel, которые позаботятся об этом, но я пока не смог этого сделать. Неясно, повлияют ли какие-либо из этих параметров на код надстроек или они применимы только к коду в основном приложении.

Вариант 2: расширить дополнительный компонент, чтобы избежать Object.assign().

К сожалению, проблемные строки находятся в init() компонента. Когда мой расширенный компонент вызывает this._super(), код, которого я пытаюсь избежать, все равно запускается. Есть ли способ «пропустить» init() базового компонента и сразу перейти к Ember Component.init() (надстройка _super())?

Вариант 3: отказаться от стороннего дополнения, сохранить то, что можно, и создать собственный компонент.
Раздражает, но выполнимо. На данный момент, вероятно, было бы быстрее сделать это с самого начала.

Вариант 4: исправьте надстройку, чтобы удалить проблемный код. Мое колебание здесь двоякое: 1, если это то, чем я должен каким-то образом управлять в своем приложении, мне кажется неправильным вносить изменения в надстройку (хотя определенно есть аргумент «лучшие практики»). здесь). Больше беспокоит то, что это надстройка с низкой активностью. Даже если я отправлю PR с изменением, я не уверен, сколько времени потребуется для новой версии.
А пока что рекомендуется делать? Направьте мое приложение на локальную сборку, а затем не забудьте обновить его до «официальной» версии, если/когда оно будет выпущено?

Я подозреваю, что вариант 1, полифиллы и/или настройки сборки, является наиболее правильным курсом действий, но я в недоумении, что конкретно делать.

Дополнительная информация: Мое приложение было разработано с помощью Ember 2.7, и я сейчас обновляю его до Ember 3.1. Эта проблема существует в обеих сборках.


person user2712821    schedule 22.08.2018    source источник
comment
вариант 4: отправьте патч для надстройки, чтобы использовать Ember.assign, который использует собственный Object.assign, когда он доступен, и возвращается к полифиллу.   -  person runspired    schedule 22.08.2018
comment
Я согласен с runspired. Моим первым шагом было бы открыть проблему, предлагающую исправить ее, и посмотреть, ответит ли сопровождающий. Это минимум работы, если они активны!   -  person handlebears    schedule 23.08.2018
comment
Я согласен, что «исправить аддон» было бы самым простым. Мои опасения заключались в том, что 1, это то, с чем я должен как-то справиться сам (вариант 1) и 2, это аддон с низкой активностью. Я не уверен, сколько времени потребуется, чтобы получить новый «официальный» релиз, даже если я сделаю PR с изменением. Я обновлю вопрос. Спасибо   -  person user2712821    schedule 23.08.2018
comment
Удачи! Со многими сопровождающими можно связаться через Slack сообщества Ember, если вы не получили ответа.   -  person handlebears    schedule 24.08.2018


Ответы (1)


Вы можете включить полифилл:

// ember-cli-build.js

let app = new EmberApp(defaults, {
  'ember-cli-babel': {
    includePolyfill: true
  }
});
person Gennady Dogaev    schedule 23.08.2018
comment
Спасибо, это идеально. И так просто! - person user2712821; 24.08.2018