首页 > 解决方案 > 比全局禁用原型扩展以在应用程序中使用外部库更好的修复?

问题描述

我在 Ember 应用程序中使用 PDF.js。

有时,我收到一个错误,这似乎是由 Ember 扩展数组原型并使它们可枚举引起的,如此处所述

似乎问题是由 Ember 引起的,因为它在数组上添加了许多方法,但由于某种原因,它们都是可枚举的,这就是问题的原因。在例如数组和对象上添加方法时,它们应该设置为 enumerable = false,就像本机方法一样。

一个可行的解决方案是像这样将数组扩展名全局设置为 false

//config/environment.js

EmberENV: {
    EXTEND_PROTOTYPES: {
        String: true,
        Array: false,
        Function: true
    }
}

但这似乎非常低效,因为我们的应用程序已经相当大,并且在任何有数组的地方返回并将它们转换为 Ember 数组将是非常乏味的工作。

有没有更好的方法来处理这个问题?

起初我以为这可能是 babel 的 polyfill问题

发现了问题——我们正在填充 Array.prototype.find。

但是删除 babel 的 polyfill 并不能解决问题。

我不明白 Ember 如何能够修改外部库方法来扩展它,然后导致错误。我有点迷失在哪里寻找不涉及全局修改 ember 数组扩展的解决方案。

任何帮助将不胜感激。

谢谢。

标签: javascriptarraysember.jspdf.js

解决方案


推荐阅读