Object.assign() 在 Ember 应用程序的附加组件中导致 IE11 出现问题
Object.assign() in add-on in Ember app causes problems in IE11
我有一个 Ember 应用程序,它使用了多个第 3 方插件。这些附加组件之一使用 Object.assign() 导致 IE11 出现问题,特别是错误
Error: Object doesn't support property or method 'assign'
我知道为什么会这样,但我对 Ember 比较陌生,不确定 handle/fix 的最佳方法。根据我的研究,一些选项是:
选项 1:使用 polyfills (?)
我认为我可以安装一些额外的库,或者在 Babel 中设置选项来解决这个问题,但到目前为止我还没有能够这样做。目前尚不清楚这些选项中的任何一个是否会影响附加组件的代码,或者它们是否仅适用于主应用程序中的代码。
选项 2:扩展 附加组件以避免 Object.assign()。
不幸的是,有问题的行在组件的 init() 中。当我的扩展组件调用 this._super() 时,我试图避免的代码无论如何都是 运行。有没有办法 'skip' 基本组件的 init() 并直接转到 Ember 的 Component.init() (附加组件的 _super())?
选项 3:放弃第 3 方附加组件,尽我所能,制作我自己的组件。
刺激但可行。在这一点上,从一开始就这样做可能会更快。
选项 4:修复加载项以删除问题代码。我在这里的犹豫有两点:1,如果这是我应该以某种方式在我的应用程序中管理的东西,那么进行附加组件更改似乎是不正确的(尽管肯定有一个 'best practices' 论点是在这里制作)。更大的担忧是这是一个低 activity 的附加组件。即使我提交了更改后的 PR,我也不确定新版本需要多长时间。
同时,推荐的做法是什么?将我的应用程序指向本地版本,然后记得将其更新为 'official' 版本 if/when 它已发布?
我怀疑选项 1,polyfills and/or 构建设置,是最正确的做法,但我不知道具体要做什么。
附加信息:
我的应用程序是使用 Ember 2.7 开发的,我正在将其更新到 Ember 3.1。两个版本都存在这个问题。
你可以include polyfill:
// ember-cli-build.js
let app = new EmberApp(defaults, {
'ember-cli-babel': {
includePolyfill: true
}
});
我有一个 Ember 应用程序,它使用了多个第 3 方插件。这些附加组件之一使用 Object.assign() 导致 IE11 出现问题,特别是错误
Error: Object doesn't support property or method 'assign'
我知道为什么会这样,但我对 Ember 比较陌生,不确定 handle/fix 的最佳方法。根据我的研究,一些选项是:
选项 1:使用 polyfills (?)
我认为我可以安装一些额外的库,或者在 Babel 中设置选项来解决这个问题,但到目前为止我还没有能够这样做。目前尚不清楚这些选项中的任何一个是否会影响附加组件的代码,或者它们是否仅适用于主应用程序中的代码。
选项 2:扩展 附加组件以避免 Object.assign()。
不幸的是,有问题的行在组件的 init() 中。当我的扩展组件调用 this._super() 时,我试图避免的代码无论如何都是 运行。有没有办法 'skip' 基本组件的 init() 并直接转到 Ember 的 Component.init() (附加组件的 _super())?
选项 3:放弃第 3 方附加组件,尽我所能,制作我自己的组件。
刺激但可行。在这一点上,从一开始就这样做可能会更快。
选项 4:修复加载项以删除问题代码。我在这里的犹豫有两点:1,如果这是我应该以某种方式在我的应用程序中管理的东西,那么进行附加组件更改似乎是不正确的(尽管肯定有一个 'best practices' 论点是在这里制作)。更大的担忧是这是一个低 activity 的附加组件。即使我提交了更改后的 PR,我也不确定新版本需要多长时间。
同时,推荐的做法是什么?将我的应用程序指向本地版本,然后记得将其更新为 'official' 版本 if/when 它已发布?
我怀疑选项 1,polyfills and/or 构建设置,是最正确的做法,但我不知道具体要做什么。
附加信息: 我的应用程序是使用 Ember 2.7 开发的,我正在将其更新到 Ember 3.1。两个版本都存在这个问题。
你可以include polyfill:
// ember-cli-build.js
let app = new EmberApp(defaults, {
'ember-cli-babel': {
includePolyfill: true
}
});