Jsdom: parentWindow๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์—ญ์œผ๋กœ ํ™•์žฅํ•  ๋•Œ ์ตœ๋Œ€ ํ˜ธ์ถœ ์Šคํƒ ํฌ๊ธฐ๊ฐ€ ์ดˆ๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2014๋…„ 01์›” 23์ผ  ยท  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 ahhh ์™œ ์ง€๊ธˆ

์–ด๋–ค ๋ฏธ์นœ ์‚ฌ๋žŒ์ด ์•ž์œผ๋กœ์ด ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ, ์‚ฌ์šฉ _.defaults ๋Œ€์‹  _.extend ์ด ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

์ด๊ฒƒ์€ jsdom์˜ window.setTimeout ์— global.setTimeout ๋Œ€ํ•œ ํ˜ธ์ถœ์ด ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•˜๋ฉด ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

NodeJS์— setTimeout์ด ์žˆ์œผ๋ฏ€๋กœ window.setTimeout์ด ๊ธฐ๋ณธ ํ•จ์ˆ˜์˜ ํด๋ก ์ด ๋  ์ˆ˜ ์—†๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

JSDOM ์ž‘์—…์„ ํ•œ ์ง€ ๊ฝค ๋˜์—ˆ์ง€๋งŒ IIRC JSDOM ํƒ€์ด๋จธ ๊ตฌํ˜„์€ ์—ด๋ฆฐ ํƒ€์ด๋จธ๋ฅผ ์ถ”์ ํ•˜๋ฏ€๋กœ ๋งค๋‹ฌ๋ฆฐ ํƒ€์ด๋จธ๋กœ ์ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด window.close ์—์„œ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@brianmcd ahhh ์™œ ์ง€๊ธˆ

์–ด๋–ค ๋ฏธ์นœ ์‚ฌ๋žŒ์ด ์•ž์œผ๋กœ์ด ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ, ์‚ฌ์šฉ _.defaults ๋Œ€์‹  _.extend ์ด ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๊ฒŒ์‹œ ๊ทธ๋ž˜์„œ ํ–‰๋ณต defaults ๋Œ€์‹  extend . @JacksonGariety ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰