"Promise.prototype.finally() is not a function" Teams 中的错误

"Promise.prototype.finally() is not a function" error in Teams

Promise.prototype.finally 成为 ECMAScript 规范的一部分已经一年多了,并且在大多数浏览器中都没有错误。

在 Teams 桌面应用程序中使用时,我在控制台中看到 "Promise.prototype.finally() is not a function" 错误。是否有任何文档说明可以在 Teams 应用程序中使用什么?

我可以 polyfill 这个函数,但想知道关于任何其他怪癖的文档或关于使用什么的支持?

为什么这个问题是在 Teams 桌面应用而不是 Teams Web 应用中引起的?

即使 Microsoft Teams 在桌面客户端中使用 ES6 Promises 也没关系,因为 Teams 需要 运行 在不支持它们的 IE11 上。这里有多种选择。

  1. 使用 Babel 将 JavaScript 从 ES6 和 ES7 转译为 ES5:

  2. 编译时使用 TypeScript 和目标 ES5:

  3. 使用众多可用的 polyfill 之一:

    https://ourcodeworld.com/articles/read/316/top-5-best-javascript-promises-polyfills

要添加 Wajeed 的答案,您还可以使用添加一个 polyfill CDN,它只下载用户正在使用的浏览器所需的 polyfill(当然基于您作为开发人员标记为必需的功能列表申请 运行): https://cdn.polyfill.io/v3/

您可以检查您的功能是否被我可以使用的浏览器支持:https://caniuse.com/promise

为了回答 "why" 问题,Microsoft Teams 使用 Electron 1.7.1(根据位于 Teams.exe 旁边的 ThirdPartyNotice.txt 文件)并且只添加了 Promise.prototype.finally在电子 3.x.