Ember应用程序中的加载项中的Object.assign()导致IE11中的问题

时间:2018-08-22 20:33:11

标签: ember.js babel-polyfill

我有一个使用多个3rd Party附加组件的Ember应用程序。这些附加组件之一使用Object.assign(),这会导致IE11中的问题,特别是错误

  

错误:对象不支持属性或方法“分配”

我知道为什么会这样,但是我对Ember还是比较陌生,并且不确定处理/修复此问题的最佳方法。根据我的研究,一些选择是:

选项1:使用 polyfills (?)

我认为也许可以安装一些其他库,或者在Babel中设置一些选项来解决这个问题,但是到目前为止,我还无法做到。尚不清楚这些选项中的任何一个是否会影响插件中的代码,或者它们仅适用于主应用程序中的代码。

选项2:扩展该附加组件以避免Object.assign()。

不幸的是,有问题的行在组件的init()中。当我的扩展组件调用this._super()时,我试图避免的代码仍然在运行。有没有一种方法可以“跳过”基础组件的init()并直接转到Ember的Component.init()(附加组件的_super())?

选项3:抛弃第三方插件,抢救我的力量,并制造自己的组件。
烦人但可行。在这一点上,从一开始就可能会更快。

选项4:修复插件以删除问题代码。我的犹豫有两个方面:1,如果我应该以某种方式在我的应用程序中进行管理,则对附加组件进行更改似乎并不正确(尽管肯定有一个“最佳实践”的论点)这里)。更大的担忧是,这是一个活动量很小的插件。即使我提交更改的PR,也不确定新版本将花费多长时间。
同时,推荐的做法是什么?将我的应用程序指向本地版本,然后记得是否在发布时将其更新为“官方”版本?

我怀疑选项1,polyfills和/或build设置是最正确的做法,但是我对具体要做的事一无所知。

其他信息: 我的应用是使用Ember 2.7开发的,目前正在将其更新到Ember 3.1。这两个版本中都存在此问题。

1 个答案:

答案 0 :(得分:1)

您可以include polyfill

// ember-cli-build.js

let app = new EmberApp(defaults, {
  'ember-cli-babel': {
    includePolyfill: true
  }
});