t.log = ํจ์(...e) {
return "object" == typeof console && console.log && console.log(...e)
}
์ด ์ฝ๋๋ IE11์์ ์คํ๋์ง ์์ต๋๋ค.
์๋ณ์ ์ค๋ฅ๊ฐ ์์๋ฉ๋๋ค.
v2.3.0
๋ฐ IE 11์์๋ ๋์ผ
v2.3.0
๋ฐ IE 11์์๋ ๋์ผ
์ฐ๋ฆฌ๋ 2.2.0์ผ๋ก ๋๋์๊ฐ๊ณ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
๋๋ ๋ํ 2.2.0์ผ๋ก ๋๋๋ ธ๊ณ ์ ์๋ํฉ๋๋ค. ๋ชจ๋์์ ๋ด๋ณด๋ธ ์ฝ๋๊ฐ ์ ํจํ ES5๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ธ์, ๊ทธ๊ฒ์ babel์ ์ํด ํธ๋์คํ์ผ๋์์ด์ผ ํ๋ค... ๋๋ ์ด๊ฒ์ ์ดํด๋ณด๊ฒ ๋ค.
๋ฅด์ฅฌ. 9์ 26์ผ 2019 ร 11:09, orangejuice ์๋ฆผ @github.com a
์ํฌ๋ฆฌํธ :
๋๋ ๋ํ 2.2.0์ผ๋ก ๋๋๋ ธ๊ณ ์ ์๋ํฉ๋๋ค.
โ
์ด ์ค๋ ๋์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/socketio/socket.io-client/issues/1328?email_source=notifications&email_token=ADDNSFI5LWY4MJXY24WZNNLQLR333A5CNFSM4I2MYYBKYY3PNVWWK3TUL52HS4VMVXVEXG
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ADDNSFNC7OUW4Z3BEWLSNRLQLR333ANCNFSM4I2MYYBA
.
์ด๊ฒ์ ๋ฐฐํฌ ๊ฐ๋ฅ ํญ๋ชฉ์์ ํ์ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ v3์์ v4๋ก ๋๋ฒ๊ทธ๋ฅผ ์
๋ฐ์ดํธํ ํ์ ๋ฐ์ํ์ต๋๋ค.
๋งค์ฐ ์์ฃผ node_modules๋ ์ฑ๋ฅ์์ ์ด์ ๋ก babel ์ปดํ์ผ์์ ์ ์ธ๋ฉ๋๋ค.
IE11์์๋ ์ด๊ฒ์ ์ป์์ต๋๋ค.
"SyntaxError: Syntax error
at ../node_modules/socket.io-client/node_modules/debug/src/browser.js (http://192.168.86.48:3000/static/vendors~vehicle-Vehicle.jsx.eb6d2ebd6bfc7172757c.js:510:1)
at __webpack_require__ (http://192.168.86.48:3000/static/client.js?1571655164758:107:12)
at eval code (eval code:7:1)
at ../node_modules/socket.io-client/lib/url.js (http://192.168.86.48:3000/static/vendors~vehicle-Vehicle.jsx.eb6d2ebd6bfc7172757c.js:488:1)
at __webpack_require__ (http://192.168.86.48:3000/static/client.js?1571655164758:107:12)
at eval code (eval code:6:1)
at ../node_modules/socket.io-client/lib/index.js (http://192.168.86.48:3000/static/vendors~vehicle-Vehicle.jsx.eb6d2ebd6bfc7172757c.js:444:1)
at __webpack_require__ (http://192.168.86.48:3000/static/client.js?1571655164758:107:12)
at eval code (eval code:55:22)
at ./shared/components/catalogue/ValuationCatalogue.jsx (http://192.168.86.48:3000/static/vehicle-Vehicle.jsx.b7e97db41986fa53caa6.js:344:1)"
์ํฅ์ ๋ฐ๋ ๋ผ์ธ
/**
* Invokes `console.log()` when available.
* No-op when `console.log` is not a "function".
*
* <strong i="9">@api</strong> public
*/
function log(...args) {
// This hackery is required for IE8/9, where
// the `console.log` function doesn't have 'apply'
return typeof console === 'object' &&
console.log &&
console.log(...args);
}
ํธ๋์คํ์ผ๋์ง ์์ ์ฝ๋๋ก ์๋ณ๋์์ผ๋ฏ๋ก ์ถ๊ฐํ ๋ด์ฉ์ด ๋ง์ง ์์ต๋๋ค.
v2.3.0
๋ฐ IE 11์์๋ ๋์ผ
๋ฐ iOS9 ์ฌํ๋ฆฌ
์ด๊ฒ์ ์๋์ผ๋ก ์ ๊ทธ๋ ์ด๋๋ ํฌ์ธํธ ๋ฆด๋ฆฌ์ค์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋ค. ์ฌ์ ํ IE11์ ์ง์ํ๋ ์ฌ๋๋ค์๊ฒ ์ด๊ฒ์ ๋งค์ฐ ์ฌ๊ฐํฉ๋๋ค. ๊นจ๋ซ๋ ๋ฐ ๋ฉฐ์น ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ผ๋ง๋ ๊ฑธ๋ฆด ๊ฒ์ผ๋ก ์์ํ์ญ๋๊น?
์ด ๋ฌธ์ ๋ debug:4.1.0
์ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ทธ๋ค์ ์ด๋ฏธ ๋ฉ์๋๋ฅผ ๊ต์ฒดํ์ง๋ง ์ด ๋ฌธ์ ๊ฐ ์์ ๋ ์ ๋น๋๋ ์์ต๋๋ค.
socket.io-client
๋ฐ engine.io-client
๋ํ ์์ ์ ํ์ฌ ๋ฒ์ debug
์ 4.0.1
๋ฒ์ ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์
๋๋ค.
๋ถํํ๋ debug
๋ ์ฐ๋ฆฌ์ ๋ฌธ์ ๋ฅผ ์ ํ ๋ฃ๊ณ ์ถ์ดํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. https://github.com/visionmedia/debug/issues/668#issuecomment -576262641
์๋ ํ์ธ์ @darrachequesne์ ๋๋ค :)
socket.io-client
์ ๋ํ debug
ํจํค์ง๋ฅผ 4.0.1
์์ต๋๊น? ๊ฐ์ฌํฉ๋๋ค!
๊ทธ ๋์ ๋๋ debug
์ ๊ด๋ฆฌ์์๊ฒ ์ ๊ทผํ๋ ค๊ณ ์๋ํ๊ณ ๋ ์ด์ ํจํค์ง๋ฅผ ES5
์ฝ๋๋ก ๋ณํํ์ง ์๊ธฐ๋ก ํ ๊ทธ์ ์ ํ์ ๋ค์ ๊ณ ๋ คํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ต๋๋ค. https://github.com/ ๋น์ ๋ฏธ๋์ด/๋๋ฒ๊ทธ/์ด์/745
๋๋ ๊ทธ ๋ฌธ์ ๋ฅผ ์์ฒ ๋ฒ ๋ค์๋ค. ๋ฌธ์ ๊ฐ ์ฒ์ ๋ง๋ค์ด์ก์ ๋๋ถํฐ ๋ค์์ต๋๋ค. ๊ตฌ์ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ๋ ค๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ณํํ์ญ์์ค. debug
๋ ES6 ๋ชจ๋๋ก ์์ฑ๋๊ณ ๊ฒ์๋๋ ๋ง์ ์ข
์์ฑ ์ค ์ฒซ ๋ฒ์งธ์ ๋ถ๊ณผํฉ๋๋ค.
๋งค์ฐ ์์ฃผ node_modules๋ ์ฑ๋ฅ์์ ์ด์ ๋ก babel ์ปดํ์ผ์์ ์ ์ธ๋ฉ๋๋ค.
์ด๊ฒ์ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์์ ์ ์ฝ๋๋ฅผ ์๊ธฐ ์๋์ ๊ณ ์ ํด์ผ ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ฝ์์คํ
์ ๋๋ฆฌ์ง๋ง ์๋ฅผ ๋ค์ด IE11์ด ์ฐ๋ฆฌ๋ฅผ ์ต์ ํ ๋ ๋ ๋๋ฆฝ๋๋ค. debug
๊ฐ ๋ง์ด ์ ํ๋๋ ์ด์ ๋ ํจํค์ง์ ๊ฐ์ฅ ๋ง์ด ์์กดํ๋ ์์ 10๊ฐ ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก 100๊ฐ์ ๋ค๋ฅธ ์ข
์์ฑ์ด ์๋๋ฅผ ๋ฆ์ถ๋๋ผ๋ ์ค๋ฅ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ฒซ ๋ฒ์งธ ํจํค์ง ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค์ด๋.
์๋ transpile, ์ ๋ฅผ ๋ฏฟ์ง ์๋ ๊ฒฝ์ฐ์ debug
๋น์ ์ node_modules
์ฑ์ ๋ค์ ๋ฒ๋คํ๋ ค๊ณ ํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฒ๋ค๋ง ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ๊ณณ์์ ์คํจํฉ๋๋ค.
Babel์ ํจ์จ์ฑ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ Babel์์ ๋ฌธ์ ๋ฅผ ์ฝ๋๋ค. CRA๊ฐ ์ ์ ํ ๋ณํ์ ์ํํ์ง ์๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ CRA์ ๋ฌธ์ ๋ฅผ ์ฝ๋๋ค.
๋๋ ๋ฌด์ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ณ ์ถ์ง ์์ต๋๋ค. ์ด๊ฒ์ ๋จ์ง debug
์ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
์ฌ๊ธฐ ์ด ๋งํฌ socket-io-client ๋ด๋ถ์ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ณ์; ์ด๊ฒ์ด Babel ํ์ ๊ณต์ ๋ต๋ณ์ ๋๋ค. ๊ฑฐ๊ธฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ ธ๊ฐ์ธ์.
์ด๋ค ๊ณต์ ๋ฐ์? ์ฐ๊ฒฐ๋ ๋ฌธ์ ๋ ๊ตฌ์ฑ๋ ๋ node_modules์์ ์ ํํ ํจํค์ง๋ฅผ ๋ณํํ์ง ์๋ babel์ ๊ดํ ๊ฒ์ด์์ผ๋ฉฐ ์์ ๋์์ต๋๋ค.
Socket.io-client๋ ๋ณํ์ ์ํด babel๋ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์นํฉ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ข ์์ฑ์ ๋จ์ผ ๋ฐฐํฌ ๊ฐ๋ฅ์ผ๋ก ๋ฌถ์ต๋๋ค.
๋ฐ๋ผ์ ์ด์ socket.io-client๊ฐ ์ด์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋๋ ค๋ฉด ๋น๋ํ๋ ๋์ ๋ณํ ๋จ๊ณ๊ฐ ํ์ํ๊ฑฐ๋ ๋๋ฒ๊ทธ๋ฅผ ๋ค์ด๊ทธ๋ ์ด๋ํ๊ฑฐ๋ ๊ต์ฒดํด์ผ ํฉ๋๋ค.
๋ฒ์ญ์ด ํ์ํ ์น์ฉ ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ ์ค์ ๋ก ๊ทธ๋ ๊ฒ ์ผ๋ฐ์ ์ด์ง ์์ต๋๋ค. ๋ช ๋ ๋์ ๋ณํํ๋ ๋์ node_modules์์ ๋ง ๊ทธ๋๋ก GB์ ์ข ์์ฑ์ด ์๋ ํ๋ก์ ํธ์์๋ ๋ช ๋ฒ๋ง ๋ง์ฃผ์ณค์ต๋๋ค. ์ง๊ธ๊น์ง ๋ชจ๋ ๊ด๋ฆฌ์๋ ๊ทธ๊ฒ์ ๋ฒ๊ทธ๋ก ์ทจ๊ธํ ๋งํผ ์ถฉ๋ถํ ํ๋ฅญํ์ต๋๋ค...
์ด๊ฒ์ ๋ด๊ฐ ์ธ๊ธํ ์๋ต์ ๋๋ค.
๋๋ ์ด๊ฒ์ด
debug
๋ฒ๊ทธ๊ฐ ์๋๋ผ Babel์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์๋์ง์ ๋ํ ๋ฌธ์ ๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค.
๋ ธ๋ ๋ชจ๋์ ํธ๋์คํ์ผํ๋๋ก Babel์ ๊ตฌ์ฑํ์ง๋ง ์ฌ์ ํ ์๋ํ์ง ์๋ ๊ฒฝ์ฐ ์กฐ์ฌ๋ฅผ ์ํด ๋ณต์ ํ ์ ์๋ ์ต์ ์ ์ฅ์๋ฅผ ์ ๊ณตํ์ธ์.
๋ฐ๋ผ์ ์ด์ socket.io-client๊ฐ ์ด์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋๋ ค๋ฉด . . . ๋ฒ์ญ ๋จ๊ณ
์ณ์. ์ด๊ฒ์ด ํ๋ ์น ๊ฐ๋ฐ์ ์ํ์ ๋๋ค.
node_modules์์ ๋ง ๊ทธ๋๋ก GB์ ์ข ์์ฑ
์ด๊ฒ์ด ์ง์ง ๋ฌธ์ ์
๋๋ค. debug
ํ์ง ์๊ธฐ๋ก ์ ํํ ๊ฒ์ด ์๋๋๋ค. ES6 ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ด ์ฌ์ฉํ๋ ์ข
์์ฑ๋ง ๋ฒ๋ค๋ก ๋ฌถ๊ณ ์ฌ์ฉํ๋ ์ข
์์ฑ๋ง ํธ๋์คํ์ผํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ์ฌ๋๋ค์ ๋งค์ผ ํฐ ํจ๊ณผ๋ฅผ ๋ณด๊ธฐ ์ํด ์ด๊ฒ์ ํฉ๋๋ค.
์ง๊ธ๊น์ง ๋ชจ๋ ๊ด๋ฆฌ์๋ ๊ทธ๊ฒ์ ๋ฒ๊ทธ๋ก ์ทจ๊ธํ ๋งํผ ์ถฉ๋ถํ ํ๋ฅญํ์ต๋๋ค...
์๋ฒฝํ๊ฒ ์ ํจํ ๋ฒ์ ์ Javascript๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฒ๊ทธ๊ฐ ์๋๋๋ค.
๊ฐ๋ฅํ ํ ๋ง์ ํ์ฑ ํ๊ฒฝ์ ์ง์ํ๋ ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ๋์ transpile node_modules๋ผ๊ณ ๋งํ๋ ๊ฒ์ ๋น์ฆ๋์ค๋ฅผ ์ด์ํ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๊ฐ์ด๋ฐ ์๊ฐ๋ฝ์
๋๋ค.
node_modules์ ๋ชจ๋ ๊ฒ์ ์ผ๋ถ ํ๋ก์ ํธ์ ๋น๋ ์๊ฐ(๋๋ก๋ ๋ช ๋ถ์์ ํ ์๊ฐ)์ 4๋ฐฐ ์ด์์ผ๋ก ๋ณํํ๋ฏ๋ก ๋ณํํ ๊ฐ ํจํค์ง๋ฅผ ์ ์คํ๊ฒ ์ ํํด์ผ ํฉ๋๋ค. ์๋ฌด๋ ๊ทธ๋ด ์๊ฐ์ด ์์ต๋๋ค.
์ค๋๋ ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ ํ Firefox๋ณด๋ค IE11์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. IE11์ ์ฌ์ ํ โโMicrosoft์์ ์ง์ํฉ๋๋ค. JS ์ปค๋ฎค๋ํฐ๊ฐ ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ ์์ง์ด์ง ์๋๋ค๋ ๊ฐ์ธ์ ์ธ ์ ๋
์ ๊ฐ์ํ๋ ๊ฒ์ ์ค์ ๋ก ์๋ฌด ์์ฉ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ๋ฅํ ํ ๋ง์ ํ์ฑ ํ๊ฒฝ์ ์ง์ํ๋ ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ๋์ transpile node_modules๋ผ๊ณ ๋งํ๋ ๊ฒ์ ๋น์ฆ๋์ค๋ฅผ ์ด์ํ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๊ฐ์ด๋ฐ ์๊ฐ๋ฝ์ ๋๋ค.
๊ทธ๊ฒ์ ์ค์ ๋ก ๊ฑด์ค์ ์ธ ํ๋๊ฐ ์๋๋ฉฐ ๊ฐ์ธ์ ์ผ๋ก ์คํ ์์ค์์ ๊ฐ๊ณ ์ถ์ ๊ทธ๋ฐ ์ข ๋ฅ์ ๋ด๋ก ๋ ์๋๋๋ค.
๋ด ๋ง์ ์ฌ๊ธฐ์์ ํ ๊ฒ ๊ฐ์์. ์ผ์ฃผ์ผ์ ๊ฑฐ์ 6์ฒ๋ง ๋ฒ ๋ค์ด๋ก๋๋๋ ๋ชจ๋์ ์ ์ง๋ณด์์ฑ์ ๊ฐ์ ํ๊ธฐ๋ก ํ ๊ฒฐ์ ์ด ๊ทํ์ ๋น์ฆ๋์ค ๋ชจ๋ธ์ ๋ง์ง ์์ ์ฃ์กํฉ๋๋ค.
์ค๋๋ ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ ํ Firefox๋ณด๋ค IE11์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. IE11์ ์ฌ์ ํ โโMicrosoft์์ ์ง์ํฉ๋๋ค. JS ์ปค๋ฎค๋ํฐ๊ฐ ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ ์์ง์ด์ง ์๋๋ค๋ ๊ฐ์ธ์ ์ธ ์ ๋ ์ ๊ฐ์ํ๋ ๊ฒ์ ์ค์ ๋ก ์๋ฌด ์์ฉ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ๊ฒฝ์ฐ์ ๋ฌธ์ ๋ ๋ด ๋ฐฉ๋ฌธ์์ 25%๊ฐ ๋ฐฉ๋ฌธํ ํ ie11์ ์ฌ์ฉํ๋ ํ์ฌ๊ฐ ๋ ๋ง๋ค๋ ๊ฒ์ ๋๋ค.
๋๋ ๊ฐ์ด๋ฐ ์๊ฐ๋ฝ์ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ง๋ง ์ฌ์ ์ ํ ๋ ๋์ ์ํ๊ธฐ ๋๋ฌธ์ ์ง์ฅ์ ๋ณด๋ผ ์ ์์ต๋๋ค :)
์ด ๋ฌธ์ ์ ๋ํ ํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
์ด ๋ฌธ์ ์ ๋ํ ํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
2.2.0 fmoessle ํ์ ํ ์ ์์ ๋
socket.io-client
๋ชจ๋์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์์๋ด๋๋ฐ 3์ผ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ ๋ชจ๋ ๋ฒ์ ์ 2.2.0์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ ๋ชจ๋ ํํธ
2.2.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ๋ ๊ฒ๋ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค. ๊ฐ์ฌ ํด์.
์๋ง๋ ์ข์ ํด๊ฒฐ์ฑ ์ socket.io๋ฅผ es5 ๋ก ๋ณํ ๋๋ ๋๋ฒ๊ทธ
๋๋ ๋๋ฒ๊ทธ/src/browser.js๋ฅผ ๋ณํํ๊ธฐ ์ํด babel๊ณผ webpack์ ์ป์ผ๋ ค๊ณ ํ๋ฃจ ์ข ์ผ ๋ ธ๋ ฅํ๊ณ ๋ด๊ฐ ์ฐ์ฐํ ๋ฐ๊ฒฌํ ๋ง์ ์ค๋ ๋์์ ๋ง์ ์ฌ๋๋ค์ด ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ง์ ์์ง๋์ด๋ง ์๊ฐ์ ์ ์ฝํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ socket.io v2.2.0์ 'ws' v7.1.2(https://github.com/websockets/ws/issues/1617)์์ ์์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์์ผ๋ฏ๋ก ์กฐ์ฌํด์ ๋ค์ด๊ทธ๋ ์ด๋ํ์ธ์.
์์ : ์์ ํ์ต๋๋ค
๋ด๊ฐ ์ฐพ์ ๋๋ถ๋ถ์ ๊ฒ์๋ฌผ์ webpack์์ /node_modules/ ์ ์ธ๋ฅผ ์ค์งํ ๊ฒ์ ๊ถ์ฅํ์ง๋ง ์๋ํ์ง ์์๊ณ ์๋๋ ๋๋ฆฝ๋๋ค. (์นํฉ์ด ํ์ผ์ ์น๊ณ ์๋ค๊ณ ํ์ ํ์ง๋ง babel์ ๊ทธ๊ฒ์ ๋ณํํ์ง ์์์ต๋๋ค. ์๋ง๋ babel/preset-env์ ๊ด๋ จ์ด ์์ ๊ฒ์
๋๋ค)
๋์ , ๋ฐฉ๊ธ debug-es5
๋ฅผ ์ค์นํ๊ณ webpack.config.js์ ์ด๊ฒ์ ์ถ๊ฐํ์ฌ debug
๋์ webpack์์ ์ฌ์ฉํ๋๋ก ํ์ต๋๋ค.
resolve: {
alias: {
debug: 'debug-es5',
},
},
๋๋ ์ฌ์ฉํ๊ณ ์์ต๋๋ค :
{
test: /\.js$/,
use: babelLoader,
exclude: excludeNodeModulesExcept(['debug']),
},
const babelLoader = {
loader: 'babel-loader',
options: {
// Don't waste time on Gzipping the cache
cacheCompression: false,
// This is a feature of `babel-loader` for webpack (not Babel itself).
// It enables caching results in ./node_modules/.cache/babel-loader/
// directory for faster rebuilds.
cacheDirectory: true,
plugins: ['@babel/plugin-syntax-dynamic-import'],
presets: [['@babel/env', { modules: false }]],
sourceMaps: includeSourcemap && !isDevelopmentMode,
},
};
md5-af1f69980cb7fa352eba1d2f79ce2612
const excludeNodeModulesExcept = function (modules) {
var pathSep = path.sep;
if (pathSep == '\\')
// must be quoted for use in a regexp:
pathSep = '\\\\';
var moduleRegExps = modules.map(function (modName) {
return new RegExp('node_modules' + pathSep + modName);
});
return function (modulePath) {
if (/node_modules/.test(modulePath)) {
for (var i = 0; i < moduleRegExps.length; i++)
if (moduleRegExps[i].test(modulePath)) return false;
return true;
}
return false;
};
};
socket.io-client๋ฅผ 2.2.0์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ์๋ํ์ง๋ง ์์ฉ ํ๋ก๊ทธ๋จ์ ๋น๋ํ๊ณ ์์ํ ํ์๋ง ์๋ํฉ๋๋ค.
dev ๋ชจ๋์์ ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
TypeError: ๊ฐ์ฒด๊ฐ 'cbrt' ์์ฑ ๋๋ ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
{
[๊ธฐ๋ฅ]: ,
__proto__: { },
์ค๋ช
: "๊ฐ์ฒด๊ฐ 'cbrt' ์์ฑ ๋๋ ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค",
๋ฉ์์ง: "๊ฐ์ฒด๊ฐ 'cbrt' ์์ฑ ๋๋ ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค",
์ด๋ฆ: "TypeError",
๋ฒํธ: -2146827850,
์คํ: "TypeError: ๊ฐ์ฒด๊ฐ 'cbrt' ์์ฑ ๋๋ ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
cielabForwardTransform์์(ํ๊ฐ ์ฝ๋:39754:3)
fromXYZ์์(ํ๊ฐ ์ฝ๋:39763:3)
at lighten(ํ๊ฐ ์ฝ๋:39706:3)
genVariations์์(ํ๊ฐ ์ฝ๋:39696:5)
๊ตฌ๋ฌธ ๋ถ์ ์(ํ๊ฐ ์ฝ๋:39606:7)
parsedTheme.get์์(ํ๊ฐ ์ฝ๋:39498:7)
generatedStyles.get์์(ํ๊ฐ ์ฝ๋:39466:7)
Theme.prototype.applyTheme์์ (ํ๊ฐ ์ฝ๋:39297:5)
ํธ๋ค๋ฌ์์(ํ๊ฐ ์ฝ๋:39449:13)
Vue.prototype.$watch์์ (ํ๊ฐ ์ฝ๋:4941:9)",
Symbol(Lang fallback)_i.t81c9tw05xo: ์ ์๋์ง ์์,
๊ธฐํธ(react.element)_h.t81c9tw05xo: ์ ์๋์ง ์์,
๊ธฐํธ(์ค์ง)_n.t81c9tw05xo: ์ ์๋์ง ์์
}
์๋ง๋ ์ข์ ํด๊ฒฐ์ฑ ์ socket.io๋ฅผ es5 ๋ก ๋ณํ ๋๋ ๋๋ฒ๊ทธ
๋๋ ๋๋ฒ๊ทธ/src/browser.js๋ฅผ ๋ณํํ๊ธฐ ์ํด babel๊ณผ webpack์ ์ป์ผ๋ ค๊ณ ํ๋ฃจ ์ข ์ผ ๋ ธ๋ ฅํ๊ณ ๋ด๊ฐ ์ฐ์ฐํ ๋ฐ๊ฒฌํ ๋ง์ ์ค๋ ๋์์ ๋ง์ ์ฌ๋๋ค์ด ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ง์ ์์ง๋์ด๋ง ์๊ฐ์ ์ ์ฝํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , socket.io v2.2.0์๋ 'ws' v7.1.2( websockets/ws#1617 )์์ ์์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์์ผ๋ฏ๋ก ์ ์คํ๊ฒ ๋ค์ด๊ทธ๋ ์ด๋ํ์ญ์์ค.
์์ : ์์ ํ์ต๋๋ค
๋ด๊ฐ ์ฐพ์ ๋๋ถ๋ถ์ ๊ฒ์๋ฌผ์ webpack์์ /node_modules/ ์ ์ธ๋ฅผ ์ค์งํ ๊ฒ์ ๊ถ์ฅํ์ง๋ง ์๋ํ์ง ์์๊ณ ์๋๋ ๋๋ฆฝ๋๋ค. (์นํฉ์ด ํ์ผ์ ์น๊ณ ์๋ค๊ณ ํ์ ํ์ง๋ง babel์ ๊ทธ๊ฒ์ ๋ณํํ์ง ์์์ต๋๋ค. ์๋ง๋ babel/preset-env์ ๊ด๋ จ์ด ์์ ๊ฒ์ ๋๋ค)๋์ , ๋ฐฉ๊ธ
debug-es5
๋ฅผ ์ค์นํ๊ณ webpack.config.js์ ์ด๊ฒ์ ์ถ๊ฐํ์ฌdebug
๋์ webpack์์ ์ฌ์ฉํ๋๋ก ํ์ต๋๋ค.resolve: { alias: { debug: 'debug-es5', }, },
๋๋ถ์ ์์ ์๊ฐ์ด ์ ์ฝ๋์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
๊ธฐ๋ณธ Webpack ๊ตฌ์ฑ์ผ๋ก ํด๊ฒฐ๋ ์ด ๋ฌธ์ ๋ก ์์ฃผ ์์ ์ ์ฅ์๋ฅผ ๋ง๋ค์์ต๋๋ค. https://github.com/kmaraz/debug-to-es5
debug
์ข
์์ฑ์ด 3.1.0
๋ก ๋๋์๊ฐ์ผ๋ฉฐ, ์ด๋ ๋ณํํ ํ์๊ฐ ์์ต๋๋ค. 2.3.1 ์์ ์ถ์๋์์ต๋๋ค.
๋๋ฒ๊ทธ ์ข ์์ฑ์ ๋ํ ํธ์ถ์ ์ ๊ฑฐํ๊ธฐ ์ํด webpack-remove-debug ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค( ์๊ฑฐ๋ ์๋ ๋น๋๋ฅผ ์ ๊ณตํ๋ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ฐพ์ ๋๊น์ง).
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ๋ฅํ ํ ๋ง์ ํ์ฑ ํ๊ฒฝ์ ์ง์ํ๋ ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ๋์ transpile node_modules๋ผ๊ณ ๋งํ๋ ๊ฒ์ ๋น์ฆ๋์ค๋ฅผ ์ด์ํ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๊ฐ์ด๋ฐ ์๊ฐ๋ฝ์ ๋๋ค.
node_modules์ ๋ชจ๋ ๊ฒ์ ์ผ๋ถ ํ๋ก์ ํธ์ ๋น๋ ์๊ฐ(๋๋ก๋ ๋ช ๋ถ์์ ํ ์๊ฐ)์ 4๋ฐฐ ์ด์์ผ๋ก ๋ณํํ๋ฏ๋ก ๋ณํํ ๊ฐ ํจํค์ง๋ฅผ ์ ์คํ๊ฒ ์ ํํด์ผ ํฉ๋๋ค. ์๋ฌด๋ ๊ทธ๋ด ์๊ฐ์ด ์์ต๋๋ค.
์ค๋๋ ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ ํ Firefox๋ณด๋ค IE11์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. IE11์ ์ฌ์ ํ โโMicrosoft์์ ์ง์ํฉ๋๋ค. JS ์ปค๋ฎค๋ํฐ๊ฐ ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ ์์ง์ด์ง ์๋๋ค๋ ๊ฐ์ธ์ ์ธ ์ ๋ ์ ๊ฐ์ํ๋ ๊ฒ์ ์ค์ ๋ก ์๋ฌด ์์ฉ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.