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
์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋นํ ๊ธฐ๊ดดํ๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ์ด ์ค๋ฅ๊ฐ ์ค์ ๋ก ๋ฌด์์ ์๋ฏธํ๋์ง ๊ถ๊ธํฉ๋๋ค.
์ด๊ฒ์ jsdom์ window.setTimeout
์ global.setTimeout
๋ํ ํธ์ถ์ด ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์
๋๋ค. ๋์ผํ๋ฉด ์คํ ์ค๋ฒํ๋ก๊ฐ ์์ต๋๋ค.
NodeJS์ setTimeout์ด ์์ผ๋ฏ๋ก window.setTimeout์ด ๊ธฐ๋ณธ ํจ์์ ํด๋ก ์ด ๋ ์ ์๋ ์ด์ ๊ฐ ์์ต๋๊น?
JSDOM ์์
์ ํ ์ง ๊ฝค ๋์์ง๋ง IIRC JSDOM ํ์ด๋จธ ๊ตฌํ์ ์ด๋ฆฐ ํ์ด๋จธ๋ฅผ ์ถ์ ํ๋ฏ๋ก ๋งค๋ฌ๋ฆฐ ํ์ด๋จธ๋ก ์ธํ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด window.close
์์ ์ทจ์ํ ์ ์์ต๋๋ค.
@brianmcd ahhh ์ ์ง๊ธ
์ด๋ค ๋ฏธ์น ์ฌ๋์ด ์์ผ๋ก์ด ๋ฌธ์ ๊ฐ์๋ ๊ฒฝ์ฐ, ์ฌ์ฉ _.defaults
๋์ _.extend
์ด ๋ฌธ์ ๋ฅผ ๋ฐฉ์ง ํ ์ ์์ต๋๋ค.
๋น์ ์ด ์ฌ์ฉ์ ๋ํ ๋ง์ง๋ง ์ฝ๋ฉํธ๋ฅผ ๊ฒ์ ๊ทธ๋์ ํ๋ณต defaults
๋์ extend
. @JacksonGariety ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@brianmcd ahhh ์ ์ง๊ธ
์ด๋ค ๋ฏธ์น ์ฌ๋์ด ์์ผ๋ก์ด ๋ฌธ์ ๊ฐ์๋ ๊ฒฝ์ฐ, ์ฌ์ฉ
_.defaults
๋์_.extend
์ด ๋ฌธ์ ๋ฅผ ๋ฐฉ์ง ํ ์ ์์ต๋๋ค.