Jsdom: ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΈ глобальном Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ parentWindow

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 23 янв. 2014  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: jsdom/jsdom

Π― Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jsdom().parentWindow , Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ большой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ bluebird ΠΈΠ»ΠΈ engine.io , Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ошибки JSDOM с ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ΠΌ максимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π° стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

JSDOM ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ссли ΠΎΠ½ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try...catch , поэтому ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ изящно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² JSDOM?

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

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

Π― понимаю, Ρ‡Ρ‚ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования довольно странный, Π½ΠΎ ΠΌΠ½Π΅ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ эта ошибка.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@brianmcd Π°Π°Π°Π°, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ это Π΄Π΅Π»Π°Π΅Ρ‚.

Если Ρƒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΈΠ· ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠΈΡ… Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ _.defaults вмСсто _.extend Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

ВсС 4 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ jsdom window.setTimeout содСрТит Π²Ρ‹Π·ΠΎΠ² global.setTimeout . Когда ΠΎΠ½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, происходит ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ NodeJS ΠΈΠΌΠ΅Π΅Ρ‚ setTimeout, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ window.setTimeout Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ просто ΠΊΠ»ΠΎΠ½ΠΎΠΌ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

ΠŸΡ€ΠΎΡˆΠ»ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя с Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΊΠ°ΠΊ я Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ JSDOM, Π½ΠΎ IIRC, рСализация Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° JSDOM, отслСТиваСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π² window.close Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти ΠΈΠ·-Π·Π° ΠΎΠ±ΠΎΡ€Π²Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ².

@brianmcd Π°Π°Π°Π°, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ это Π΄Π΅Π»Π°Π΅Ρ‚.

Если Ρƒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΈΠ· ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠΈΡ… Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ _.defaults вмСсто _.extend Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π’Π°ΠΊ счастлив, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ свой послСдний ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΎΠ± использовании defaults вмСсто extend . Бпасибо @JacksonGariety!

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ