Jsdom: Maximale Aufrufstapelgröße beim Erweitern von global mit parentWindow überschritten

Erstellt am 23. Jan. 2014  ·  4Kommentare  ·  Quelle: jsdom/jsdom

Ich habe festgestellt, dass beim Erweitern der globalen Variablen mit jsdom().parentWindow und auch beim Einbinden einer großen Bibliothek wie bluebird oder engine.io JSDOM-Fehler mit einer maximalen Aufrufstapelgröße überschritten wurden.

JSDOM funktioniert weiterhin, wenn es in eine try...catch Anweisung eingeschlossen ist. Wäre es also möglich, diesen Fehler innerhalb von JSDOM ordnungsgemäß zu behandeln?

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

Ergebnisse in:

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

Ich verstehe, dass der Anwendungsfall ziemlich bizarr ist, aber ich bin neugierig, was dieser Fehler wirklich bedeutet.

Hilfreichster Kommentar

@brianmcd ahhhh Ich verstehe, warum es das jetzt tut.

Wenn in Zukunft verrückte Leute dieses Problem haben, verwenden Sie _.defaults anstelle von _.extend , um dieses Problem zu vermeiden.

Alle 4 Kommentare

Dies ist ein Problem, da window.setTimeout jsdom einen Aufruf von global.setTimeout . Wenn sie gleich sind, gibt es einen Stapelüberlauf.

Da NodeJS setTimeout hat, gibt es einen Grund, warum window.setTimeout nicht einfach ein Klon der nativen Funktion sein kann?

Es ist eine Weile her, seit ich an JSDOM gearbeitet habe, aber IIRC, die JSDOM-Timer-Implementierung, verfolgt offene Timer, sodass wir sie in window.close abbrechen können, um Speicherlecks durch baumelnde Timer zu vermeiden.

@brianmcd ahhhh Ich verstehe, warum es das jetzt tut.

Wenn in Zukunft verrückte Leute dieses Problem haben, verwenden Sie _.defaults anstelle von _.extend , um dieses Problem zu vermeiden.

Ich freue mich sehr, dass Sie Ihren letzten Kommentar zur Verwendung von defaults anstelle von extend gepostet haben. Danke @JacksonGariety!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

domenic picture domenic  ·  3Kommentare

potapovDim picture potapovDim  ·  4Kommentare

khalyomede picture khalyomede  ·  3Kommentare

drewish picture drewish  ·  4Kommentare

eszthoff picture eszthoff  ·  3Kommentare