Jsdom: Taille maximale de la pile d'appels dépassée lors de l'extension globale avec parentWindow

Créé le 23 janv. 2014  ·  4Commentaires  ·  Source: jsdom/jsdom

J'ai remarqué lors de l'extension de la variable globale avec jsdom().parentWindow , et également en incluant une grande bibliothèque telle que bluebird ou engine.io , des erreurs JSDOM avec une taille maximale de pile d'appels dépassée.

JSDOM continue de fonctionner s'il est enveloppé dans une instruction try...catch , serait-il donc possible de gérer correctement cette erreur dans JSDOM ?

_(global).extend(jsdom().parentWindow)
var engine = require('engine.io')

Résulte en:

node_modules/jsdom/lib/jsdom/browser/index.js:121
this.setTimeout = function (fn, ms) { return startTimer(setTimeout, clearT
                           ^
RangeError: Maximum call stack size exceeded

Je comprends que le cas d'utilisation est assez bizarre, mais je suis curieux de savoir ce que signifie réellement cette erreur.

Commentaire le plus utile

@brianmcd ahhhh je vois pourquoi ça fait ça maintenant.

Si des fous ont ce problème à l'avenir, utilisez _.defaults au lieu de _.extend pour éviter ce problème.

Tous les 4 commentaires

C'est un problème car le window.setTimeout jsdom contient un appel à global.setTimeout . Quand ils sont identiques, il y a un débordement de pile.

Puisque NodeJS a setTimeout, y a-t-il une raison pour laquelle window.setTimeout ne peut pas simplement être un clone de la fonction native ?

Cela fait un moment que je n'ai pas travaillé sur JSDOM, mais l'implémentation du temporisateur JSDOM IIRC garde une trace des temporisateurs ouverts afin que nous puissions les annuler dans window.close pour éviter les fuites de mémoire des temporisateurs suspendus.

@brianmcd ahhhh je vois pourquoi ça fait ça maintenant.

Si des fous ont ce problème à l'avenir, utilisez _.defaults au lieu de _.extend pour éviter ce problème.

Tellement heureux que vous ayez publié votre dernier commentaire sur l'utilisation de defaults au lieu de extend . Merci @JacksonGariety !

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

jacekpl picture jacekpl  ·  4Commentaires

domenic picture domenic  ·  3Commentaires

drewish picture drewish  ·  4Commentaires

kentmw picture kentmw  ·  3Commentaires

Progyan1997 picture Progyan1997  ·  3Commentaires