javascript - 比全局禁用原型扩展以在应用程序中使用外部库更好的修复?
问题描述
我在 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 数组扩展的解决方案。
任何帮助将不胜感激。
谢谢。
解决方案
推荐阅读
- python - Python:使用不完整或没有内部网格的 cv2 检测表
- css - 使列占用缺失列的空间
- netlogo - Netlogo中病毒传播过程中将“自我”从易感染者更改为错误
- php - 自 WooCommerce 3+ 起以编程方式创建优惠券
- git - 是否可以悄悄地对 git 存储库进行更改?
- java - 如何使用 Jacob 声明变量以将输出作为 Sub 参数
- python-3.x - 检查一个图像是否是从另一个图像中剪切的
- sendmail - 如何告诉 sendmail 在 dkim 之前进行伪装?
- mysql - 我需要找到一种方法来优化从多个数据库表中提取 laravel 中的数据
- python - 根据测试的标签在关键字中包装机器人框架中的测试用例