2
votes

Erreur "Promise.prototype.finally () n'est pas une fonction" dans Teams

Promise.prototype.finally fait partie de la spécification ECMAScript depuis plus d'un an et ne donne aucune erreur dans la plupart des navigateurs.

Lorsqu'il est utilisé dans l'application de bureau Teams, je vois l'erreur «Promise.prototype.finally () is not a function» dans la console. Existe-t-il une documentation disponible sur ce qui peut être utilisé dans une application Teams?

Je peux polyfill cette fonction mais je souhaitais en savoir plus sur la documentation sur les autres bizarreries ou le support sur quoi utiliser?

Pourquoi ce problème est-il causé dans l'application de bureau Teams et non dans l'application Web Teams?


0 commentaires

3 Réponses :


3
votes

Même si Microsoft Teams a fait fonctionner les promesses ES6 dans le client de bureau, cela n'a pas d'importance car Teams doit fonctionner sur IE11, ce qui ne les prend pas en charge. Plusieurs options sont disponibles ici.

  1. Utilisez Babel pour transpiler JavaScript de ES6 et ES7 vers ES5:

    Comment faire pour que Babel 6 compiler en javascript ES5?

  2. Utilisez TypeScript et ciblez ES5 lors de la compilation:

    Typescript- Qu'est-ce que la cible dans tsconfig?

    < / li>
  3. Utilisez l'un des nombreux polyfills disponibles:

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


3 commentaires

Je pensais que Microsoft avait officiellement arrêté de prendre en charge IE11, comment se fait-il que vous le cibliez pour les applications?


Cette réponse est en cours de discussion sur Meta.


Comme ES5 est une ancienne version, y a-t-il un calendrier pour savoir quand je peux utiliser ES6 / ES7 avec Teams? Cette question visait à comprendre quel moteur JS était utilisé dans Teams. Pouvez-vous nous éclairer là-dessus?



0
votes

Pour ajouter à la réponse de Wajeed, vous pouvez également utiliser ajouter un CDN polyfill qui télécharge uniquement les polyfills requis pour le navigateur que l'utilisateur utilise (bien sûr sur la base d'une liste de fonctionnalités que vous en tant que développeur marquez comme requises pour votre application à exécuter): https://cdn.polyfill.io/v3/

Vous pouvez vérifier si votre fonctionnalité est prise en charge par quel navigateur dans puis-je utiliser: https://caniuse.com/promise


0 commentaires

3
votes

Pour répondre à la question «pourquoi», Microsoft Teams utilise Electron 1.7.1 (selon le fichier ThirdPartyNotice.txt situé à côté de Teams.exe ) et Promise.prototype.finally a été ajouté uniquement dans Electron 3.x.


0 commentaires