Il y a environ deux mois, nous avons commencé à utiliser Rollbar pour nous signaler diverses erreurs dans notre application Web. Depuis lors, nous recevons des erreurs occasionnelles :
ResizeObserver loop limit exceeded
Ce qui me perturbe dans tout ça, c'est que nous n'utilisons pas ResizeObserver
et j'ai enquêté sur le seul plugin que je pensais pouvoir être le coupable, à savoir :
Mais il ne semble pas utiliser ResizeObserver
soit.
Ce qui est également déroutant, c'est que ces messages d'erreur apparaissent depuis janvier, mais ResizeObserver
La prise en charge n'a été ajoutée que récemment à Chrome 65.
Les versions du navigateur qui nous ont donné cette erreur sont les suivantes :
- Chrome : 63.0.3239 (limite de la boucle ResizeObserver dépassée)
- Chrome : 64.0.3282 (limite de la boucle ResizeObserver dépassée)
- Bord : 14.14393 (SecurityError)
- Bord : 15.15063 (SecurityError)
Je me demandais donc si cela pouvait être un bug du navigateur ? Ou peut-être une erreur qui n'a en réalité rien à voir avec ResizeObserver
?
2 votes
C'est drôle comme même les docteurs disent
ResizeObserver has a mechanism to avoid infinite callback loops and cyclic dependencies
. Avez-vous mis à jour la dépendance à element-resize-detector (dépendance de aurelia-resize) récemment ? Il semble que celle-ci ait été mise à jour en janvier3 votes
Comme solution de rechange, vous pouvez faire
window.ResizeObserver = undefined;
au début de votre application pour simplement désactiver le ResizeObserver. Ce n'est pas la meilleure solution bien sûr, mais cela permet de revenir à ce qu'il était quand il fonctionnait1 votes
Pouvez-vous fournir une reproduction de votre code ? Oui, ResizeObserver donne aux UA une sortie (à une limite non spécifiée) pour sortir d'une boucle. L'erreur de sécurité Edge sera complètement différente car nous ne supportons pas actuellement ResizeObserver.
0 votes
Bonjour, merci pour les commentaires. Malheureusement je ne pourrai pas partager la repro. Je discute des solutions possibles proposées par @FredKleuver avec mon équipe.
0 votes
@FredKleuver il semble que la
aurelia-resize
utilise actuellement une ancienne version deelement-resize-detector
et n'a pas été mis à jour.0 votes
@FredKleuver Nous avons décidé de laisser cette question en suspens pour l'instant car il semble s'agir d'un problème qui pourrait être lié aux dépendances et il s'agit d'une erreur silencieuse, nous préférons donc ne pas faire de bricolage à moins que cela ne soit absolument nécessaire.
1 votes
@IOIIOOIO veuillez envisager d'ajouter votre propre réponse reflétant votre décision.
91 votes
Cette erreur signifie que ResizeObserver n'a pas été en mesure de fournir toutes les observations dans un seul cadre d'animation. Elle est bénigne (votre site ne sera pas interrompu).
0 votes
Ah, merci beaucoup ! Je pense que la principale préoccupation était que cela causerait des problèmes de performance. Je ne travaille plus là-bas, mais je vais le faire savoir aux gars.
0 votes
@AleksandarTotic Il est tout de même étrange que nous obtenions cette erreur à partir d'un navigateur qui ne le prend pas en charge, et alors que notre application ne semble pas l'utiliser.
1 votes
C'est un vrai PITA si vous essayez d'utiliser
onerror
. Pour aggraver les choses, Safari empêchera le message de s'afficher et vous ne pourrez même pas le filtrer.0 votes
@AleksandarTotic merci pour l'information ici ! J'ai cependant une question : comme pour l'auteur de la question, mon application hybride n'utilise ResizeObserver nulle part (même en cherchant sur tout mon ordinateur, la seule instance de ResizeObserver est un fichier Steam aléatoire). Je crains que cela ne soit le signe d'un autre problème dans l'application ; quel serait le mécanisme qui permettrait à cette erreur de se produire alors que ResizeObserver n'est jamais utilisé ?
1 votes
> Quel serait le mécanisme permettant à cette erreur de se produire lorsque le ResizeObserver n'est jamais utilisé ? Cette erreur ne se produira jamais si le RO n'est pas utilisé. D'où vient l'utilisation ? Je vois 2 options. A) Une extension, ou B) RO est utilisé en interne par Chrome dans certaines balises (vidéo). B) ne devrait pas se produire, et c'est un bug. Si vous avez un cas reproductible que vous pouvez partager, veuillez déposer un bogue sur crbug.com.
1 votes
@SergioPrado ^^
0 votes
@AlexanderTaran nous avons utilisé une vidéo qui recevait un ResizeObserver attaché par Chrome ; merci pour votre aide ici ! J'apprécie vraiment votre aide.
0 votes
Au cas où vous voudriez l'ignorer explicitement, vous devez également faire la même chose avec la version de Firefox qui est la suivante
ResizeObserver loop completed with undelivered notifications.
(y compris la période)