javascript - 仅在 Firefox 上:finally 不是函数 | 被包覆盖的承诺
问题描述
注意:问题已在此处解决。这是一个包裹的问题。
我刚刚在 Firefox 64.x 上测试了我的网站并看到了错误:
Unhandled promise rejection TypeError: "ic.all(...).then(...).catch(...).finally is not a function"
Vl https://use.fontawesome.com/releases/v5.7.0/js/all.js:1:1098907
Promise http://9fcca2ff.eu.ngrok.io/js/vendor.js:183682:7
Vl https://use.fontawesome.com/releases/v5.7.0/js/all.js:1:1098761
i2svg https://use.fontawesome.com/releases/v5.7.0/js/all.js:1:1107850
Pl https://use.fontawesome.com/releases/v5.7.0/js/all.js:1:1110939
<anonymous> https://use.fontawesome.com/releases/v5.7.0/js/all.js:1:1111071
我真的不明白为什么我有这个问题,因为我使用的是 Firefox 64.x,它最终应该是默认的。
要测试我是否在控制台中键入:
Promise.resolve(42).finally(() => console.log('jo'));
我得到错误:
TypeError: Promise.resolve(...).finally 不是函数[了解更多]
奇怪的是,它只在我的网站上。如果我去其他网站并在控制台中输入它,它总是可以工作......
作为我项目的辅助信息,我正在使用:
-webpack 3.x -vue 2.6.0 -node 10.5.0 -npm 6.5.0 -laravel 5.7.x
对于 babelrc 我只使用:
{
"plugins": [
"@babel/syntax-dynamic-import",
"@babel/plugin-proposal-class-properties"
]
}
对于我正在使用的polyfill
<script crossorigin="anonymous" src="https://polyfill.io/v3/polyfill.min.js"></script>
第一个谷歌查询给了我这个问题:Promise.prototype.finally() 在 Firefox 中损坏,但我没有使用 Vue-cli 并且我所有的包都在最后一次更新中......
谷歌的第二个查询给了我这个:Firefox Promise - getting finally is not a function?但它链接回第一个问题,说这是一个问题core.js
。但我还不够好,无法理解如何解决它。
我怎样才能解决这个问题?
编辑1:
我找到了问题的根源。Algolia Place覆盖finally
,你甚至可以去他们的演示页面,当你输入时你会注意到它Promise.toSource()
我的猜测是,他们的package.json使用不正确,因为"@babel/polyfill": "^7.2.5"
它被列为依赖项,我猜这会迫使我的网页也使用它并覆盖finally
?
编辑2:
在 github 上打开了一个问题https://github.com/algolia/places/issues/725
解决方案
推荐阅读
- java - 如何从kafka主题中按键获取消息
- vb.net - 表格布局面板内下拉列表的工具提示文本
- python - 使用 nans 对数组进行矢量化插值
- jquery - 使用 AND 而不是 OR 搜索列
- python - 支持 udf 键的 jquery 图表插件
- algorithm - 考虑到这些要求,最合适的数据结构是什么?
- javascript - 在 php 页面中使用 Leaflet map
- microsoft-dynamics - Dynamics 多选选项列表的奇怪元数据返回
- php - PHP 元默认参数
- php - 如何使用查询构建器 Laravel 构建具有连接查询和子查询的复杂查询