@sentry/browser
@sentry/node
raven-js
raven-node
_(๋
ธ๋์ฉ ๋ ์ด๋ธ)_4.6.1
๊ธฐ๋ณธ์ ์ผ๋ก Node๋ ์ฒ๋ฆฌ๋์ง ์์ ์ฝ์ ๊ฑฐ๋ถ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ๊ทธ๋ฌ๋ Sentry๋ฅผ ์ด๊ธฐํํ๋ฉด ์ด๋ฌํ ๋ก๊ทธ๊ฐ ์ฌ๋ผ์ง๋๋ค. ์ด๊ฒ์ unhandledRejection
ํธ๋ค๋ฌ๊ฐ ์กด์ฌ ํ๊ณ Sentry๊ฐ ๊ทธ๋ฌํ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋ก
๋๋ Sentry๊ฐ ์ฆ์ ์ ๊ณต๋๋ ๊ฒฝํ๊ณผ ๋๋ฑ์ฑ์ ์ ๊ณตํ๊ธฐ ์ํด ํธ๋ค๋ฌ์ ๋ก๊น ์ ์ถ๊ฐํ ๊ฒ์ ์ ์ํ๊ณ ์ถ์ต๋๋ค. ์ต์ํ ๋ฌธ์๋ ์ด ๋์๊ณผ ๋ก๊น ์ ๋ณต์ํ๊ธฐ ์ํด ์ถ๊ฐ ํธ๋ค๋ฌ๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํด์ผ ํ ํ์์ฑ์ ๋ํด ์ธ๊ธํด์ผ ํฉ๋๋ค.
์ข์ ๊ฒ ๊ฐ์ง๋ง ์ด๊ฒ์ด ์ฐ๋ฆฌ์ debug: true
ํ๋๊ทธ ๋ค์ ์์ด์ผ ํ๋์ง ํ์คํ์ง ์์ต๋๋ค.
๊ฒฐ๊ตญ, ์์์ ์ผ๋ก ์ค๋ฅ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ค๋ฅ ์คํธ๋ฆผ์ Sentry๋ก ๋ฆฌ๋๋ ์
ํฉ๋๋ค.
๋๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค.
Sentry๋ฅผ ํ์ฑํํ๋ ๊ฒ์ ํฌ์ฐฉ๋์ง ์์ ์์ธ์ ๋ํ ๋ก๊น ์ ๋นํ์ฑํํ๋ ํจ๊ณผ๊ฐ ์์ผ๋ฏ๋ก ์ฒ๋ฆฌ๋์ง ์์ ์ฝ์ ๊ฑฐ๋ถ์ ๋ํด์๋ ๋ง์ฐฌ๊ฐ์ง์ผ ๊ฒ์ ๋๋ค. (๋น๋ก ์ด ๋์์ ์ฐจ์ด๋ Sentry๋ณด๋ค Node์์ ๋ ๋ถ์ผ์นํฉ๋๋ค.)
Sentry๋ฅผ ํ์ฑํํ๋ฉด ๋ด ์ค๋ฅ๊ฐ ๋ณด๊ณ ๋๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ํนํ dev์์ ์ฝ์ ๋ก๊น ์ ๋ณ๋์ ๊ฒ์ผ๋ก ์๊ฐํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๐ค
์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ ๋ก๊น ๋์์ ์์ ํ์ง ์์ผ๋ฉฐ, ํฌ์ฐฉ๋์ง ์์ ์์ธ์ ๊ฒฝ์ฐ ๋ก๊ทธ ํธ์ถ์ ํธ๋ฆฌ๊ฑฐํ๋ ๋ ธ๋ ์์ฒด์ ๋๋ค.
์ฌ๊ธฐ์์ ๊ฐ์ฅ ์ข์ ํด๊ฒฐ์ฑ ์ ๋ฌธ์์ ๋ฉ๋ชจ๋ฅผ ๋จ๊ธฐ๊ณ ๋ ๋๋ ๊ฒ์ ๋๋ค.
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at:', p, 'reason:', reason);
});
๋๊ตฐ๊ฐ๊ฐ ๊ฒฝ๊ณ ๋ฅผ ๋ค์ ํ์ฑํํ๋ ค๋ ๊ฒฝ์ฐ๋ฅผ ์ํ ์ค๋ํซ์ ๋๋ค.
๋ฌธ์๋ก ์ถฉ๋ถํ ๊ฒ์ ๋๋ค. ์ ์ด๋ Sentry๋ ํน๋ณํ ์ผ์ ํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ฌธ์ ๋ ๋ฐ๋ก ๋ ธ๋์ ๋๋ค.
๋๋ ์กํ์ง ์์ ์์ธ๋ ๋ก๊ทธ ํธ์ถ์ ํธ๋ฆฌ๊ฑฐํ๋ ๋ ธ๋ ์์ฒด์ ๋๋ค.
๋ค์ ์๊ฐํด๋ณด๋ฉด ๊ทธ๊ฒ ์ฌ์ค์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
Sentry๋ ๊ธฐ๋ณธ ๋
ธ๋ ๋์(log + exit)์ ๋นํ์ฑํํ๋ uncaughtException
ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํฉ๋๋ค.
ํธ๋ค๋ฌ( defaultOnFatalError
)๋ ์์ฒด ๋ก๊ทธ ํธ์ถ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. https://github.com/getsentry/sentry-javascript/blob/4.6.3/packages/node/src/handlers.ts#L282.
ํฌ์ฐฉ๋์ง ์์ ์์ธ์ ๋ํ ๋ก๊น ์ "๋ณต์"ํ๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌ๋์ง ์์ ์ฝ์ ๊ฑฐ๋ถ์ ๋ํด์๋ ๋์ผํ ์์ ์ ์ํํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ ๋ค์ ์ด ์ ์์ต๋๊น? ๋ด ๋ง์ง๋ง ์๊ฒฌ์ ๋ฐ๋ฅด๋ฉด ์ด์ Sentry๊ฐ ์กํ์ง ์์ ์์ธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฒ๋ฆฌ๋์ง ์์ ์ฝ์ ๊ฑฐ๋ถ์ ๋ํ ๋ก๊น ์ ๋ณต์ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๋ด๊ฐ ๋จ์ง ๋๋ฌธ์ ๋ด ์ฝ๋์์ ์ค์๋ฅผํ๋ค๋ฉด ์ผํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ๊ถ๊ธํดํ๊ธฐ ์์ํ๊ธฐ ๋๋ฌธ์์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌ uncaughtException
๋ด ๋ก๊ทธ์ ์์๊ณ ,ํ์ง unhandledRejection
. ์ด ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๋์ ๋๋ ๋ ๋ค ๊ธฐ๋กํ๊ฑฐ๋ ๋ ๋ค ๊ธฐ๋กํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋งํ ๊ฒ์ ๋๋ค.
Node์ ์ฝ์ด์์ ์ฝ๋๋ฅผ ๋ณต์ฌํ๋ ๊ฒ๋ณด๋ค ์ด๊ฒ์ ์ฒ๋ฆฌํ๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
ฮป: node --unhandled-rejections=warn app.js
๋ํ ๊ธฐ๋ณธ ๋ฌธ์ ํ์ด์ง https://github.com/getsentry/sentry-docs/pull/1099 ์ ํฌํจํ์ฌ ๋ช ํํ๊ฒ ๋ง๋ค์์ต๋๋ค.
uncaughtException
์ unhandledRejection
๊ฐ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋ ๊ฒ์ด ์ฌ์ ํ ์ด์ํฉ๋๋ค. Sentry๋ uncaughtException
๋ํ ๋ก๊น
์ ๋ณต์ํฉ๋๋ค. โ unhandledRejection
๋ํด ๋์ผํ ์์
์ ์ํํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์ฌ์ฉ์๋ ํด๋น ๋
ธ๋ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ธฐ์ตํ ํ์๊ฐ ์์ต๋๋ค. ๐ค
unhandledRejection์ ๋ํด ๋์ผํ ์์ ์ ์ํํ์ง ์๋ ์ด์
ํ๋๋ ์ค์ํ๊ณ ( unhandledException
๋ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํจ) ํ๋๋ ์ ๋ณด์ฉ(๋ฐ๋ผ์ ์ค๋ฅ๊ฐ ์๋๋ผ ๊ฒฝ๊ณ ์)์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
์์๋ฅผ ๋ฐ๋๋ก ํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ด๋ฉด --unhandled-rejections
๊ฐ none
๋ก ์ค์ ๋์ด ์์์๋ ๋ถ๊ตฌํ๊ณ ์ด๋ฅผ ๋ด๋ณด๋ด CLI ๋์์ ์ค๋จํฉ๋๋ค. ํ์ฌ ๊ณต์ ๋
ธ๋ ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํฉ๋๋ค. ์ด ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋นํ์ค์ด _๋ฉ๋๋ค_.
์ผ๋จ Node๊ฐ unhandledRejection
ํ๋ก์ธ์ค๋ฅผ ์ฃฝ์ด๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด(ํ์ฌ 4๊ฐ ๋ฒ์ ์ ๋ํด ๋งํฉ๋๋ค:P), ๊ณต์ ์ฌ์๊ณผ๋ ์ผ์นํ๋๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์์๋ฅผ ๋ฐ๋๋ก ํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ด๋ฉด CLI ๋์์ด ์ค๋จ๋ฉ๋๋ค.
@kamilogorek , ํ์ง๋ง node
์คํํ ๋ unhandledRejection
๋ฅผ console
ํฉ๋๋ค. ๊ทธ๋์ ๋๋ ๊ณต์ ๋
ธ๋ ๋ฌธ์๊ฐ ๋ฌด์์ ๋งํ๋์ง ๋ชจ๋ฅด์ง๋ง ์ ์ด๋ ๊ทธ๊ฒ์ด ๋ด๊ฐ ์์์ฐจ๋ฆฐ ํ๋์
๋๋ค.
unhandledRejection
ํธ๋ค๋ฌ๋ฅผ ์ฒจ๋ถํ์ง ์์ ๊ฒฝ์ฐ์๋ง @freeall . ์๋ ์ฝ๋๋ฅผ ์คํํ๋ฉด SDK๊ฐ ์์ด๋ ์ฌ์ ํ ๊ธฐ๋ก๋์ง ์์ผ๋ฏ๋ก ์คํ ์ค์ธ ์ฝ๋๋ฅผ ์๊ณ ์์ด์ผ ํฉ๋๋ค.
process.on('unhandledRejection', () => `ยฏ\_(ใ)_/ยฏ`);
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ https://docs.sentry.io/platforms/node/default-integrations/๋ฅผ ์ํํ๋ค๋ ๊ฒ์ ๋งค์ฐ ๋ช ํํ๊ฒ ๋ช ์ํฉ๋๋ค.
์์คํ ํตํฉ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์ธํฐํ๋ฆฌํฐ ์์ฒด์ ๊ฒฐํฉ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ ํตํฉ์ ๋๋ค. ๊ทธ๋ค์ด ํ๋ ์ผ๊ณผ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฒฝ์ฐ ๋นํ์ฑํ๋ ์ ์๋๋ก ๋ฌธ์ํ๋์ด ์์ต๋๋ค.
์ฒ๋ฆฌ๋์ง ์์ ๊ฑฐ๋ถ
์ด ํตํฉ์ ์ฒ๋ฆฌ๋์ง ์์ ์ ์ญ ๊ฑฐ๋ถ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
๋ ธ๋์ ๋์์ ๋ณ๊ฒฝํ๊ณ ์ถ์ง ์์ต๋๋ค. ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. "๋ฆฌ์ค๋๊ฐ ์์ผ๋ฉด ๋ฐฉ์ถํ์ง ๋ง์ญ์์ค. ์ฌ์ ํ ๊ฒฝ๊ณ ๋ฅผ ์ํ๋ฉด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ญ์์ค." - ์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ํ๋ ์ผ์ ๋๋ค.
@kamilogorek ๋๋ ๋น์ ์ด ์ด๋์์
Sentry๊ฐ ์๋ unhandledRejection
์์ผ๋ฉด ์ฝ์์ ํ์๋ฉ๋๋ค.
Sentry์ unhandledRejection
๊ฐ ์๋ ๊ฒฝ์ฐ ์ฝ์์ ํ์๋์ง ์์ต๋๋ค.
๋๋ ๊ฐ์ธ์ ์ผ๋ก Sentry๊ฐ ํ๋์ ๋ฐ๊พธ๋ ๊ฒ์ ์ข์ํ์ง ์์ต๋๋ค.
ํ์ง๋ง ์ด๊ฒ์ด Node.js๊ฐ ์ค๊ณ๋ ๋ฐฉ์์
๋๋ค ยฏ_(ใ)_/ยฏ
ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ๋ฉด ๊ฒฝ๊ณ ๊ฐ ์ฌ๋ผ์ง๋๋ค. SDK์ ์ฃผ์ ๋ชฉ์ ์ธ ์ฒ๋ฆฌ๋์ง ์์ ์ค๋ฅ๋ฅผ ์ก์ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด๊ธฐ ๋๋ฌธ์ SDK๋ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ฌผ๋ก ๋
ธ๋๊ฐ ์ด๋ป๊ฒ ์ค๊ณ๋์๋์ง๋ ๋ง์ต๋๋ค. ํธ๋ค๋ฌ๋ฅผ ์ฐ๊ฒฐํ๋ฉด ๊ฒฝ๊ณ ๊ฐ ์ฌ๋ผ์ง๋๋ค.
์ฌ๋๋ค์ด ๋ฌป๋ ๊ฒ์ ๋
ธ๋์ ๊ธฐ๋ณธ ๋์์ ๋ชจ๋ฐฉํ๊ณ ์ฝ์์ ๊ธฐ๋กํ๋ผ๋ ๊ฒ์
๋๋ค. ๋ณ๊ฒฝ๋ ๋์์ Sentry์ ๊ฐ์ ๋๊ตฌ์์ ๊ธฐ๋ํ๋ ๊ฒ๊ณผ ๋ค๋ฆ
๋๋ค.
์ด์จ๋ , ๋น์ ์ ์ด ๋์์ ์ค์ ํ ๊ฒ ๊ฐ์ผ๋ฏ๋ก ํ ๋ก ์ ๊ณ์ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ํ์ง๋ง ์๊ฐ์ ๋ด์ด ๋ต๋ณํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. :)
@freeall๋๋ ๊ฐ์ฌํฉ๋๋ค ํญ์ ์๋ฉด ๋ณด๊ธฐ ์ข๋ค์ :)
๋ช
ํํ ํ๊ธฐ ์ํด: Sentry๋ฅผ ํ์ฑํํ ๋ unhandledException
(exit + log)์ ๋์์ ์ ์ง๋์ง๋ง unhandledRejection
(log)์ ๋์์ ์ ์ง๋์ง ์์ต๋๋ค.
|ํธ๋ค๋ฌ|๋ก๊ทธ|์ข
๋ฃ|
|-|-|-|
| unhandledException
๊ธฐ๋ณธ๊ฐ|์|์|
| unhandledException
๋ณด์ด|์|์|
| unhandledRejection
๊ธฐ๋ณธ๊ฐ|์|์๋์|
| unhandledRejection
๋ณด์ด|์๋์|์๋์|
ํ์ฌ ๊ณต์ ๋ ธ๋ ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํฉ๋๋ค.
์ฌ๊ธฐ์ "์์๋๋ก"๋ ์ฌ์ฉ์๊ฐ Sentry๊ฐ unhandledRejection
๋ํ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ๊ณ ์๋ค๋ ๊ฒ์ ์ดํดํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ๊ฑฑ์ ํ ํ์๊ฐ ์๋ ๊ตฌํ ์ธ๋ถ ์ฌํญ์
๋๋ค.
๋๋ ๋น์ ์ ์์ ์ ๋ด
๋๋ค. Sentry๋ ๋ํ --unhandled-rejections
์ค์ํด์ผ ํ๋ฉฐ, ํ๋๊ทธ๊ฐ none
๋๊ณ Sentry๊ฐ ๊ณ์ ๊ธฐ๋กํ๋ ๊ฒฝ์ฐ์๋ ์ํ๋์ง ์์ต๋๋ค.
@freeall ์ฃผ์์ ์ด๊ฒ์ ์์ฃผ ์ ์์ฝํฉ๋๋ค.
Sentry ์ฌ์ฉ์๋ Sentry๊ฐ ํ๋ก๊ทธ๋จ์ ๋์์ ๋ณ๊ฒฝํ์ง ์๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
ํฌ์ฐฉ๋์ง ์์ ์ฝ์ ๊ฑฐ๋ถ๋ "2๊ธ ์ค๋ฅ"๊ฐ ์๋๋๋ค. ์ ์์ ์ธ ์ค๋ฅ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฑ์ด ์ค๋จ๋ ์ ์์ผ๋ฉฐ ์ค์ ๋ก ๋ฐ์ํฉ๋๋ค.
์ฌ๋ฌ ์ฌ์ฉ์(์ ํฌํจ)๊ฐ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ ๊ฒ ๊ฐ์ผ๋ฉฐ ์์ผ๋ก ๋ ๋ง์ ์ฌ์ฉ์๊ฐ ์ด ๋ฌธ์ ๋ฅผ ๊ฒช์ ๊ฒ์ ๋๋ค.
์์ฝํ์๋ฉด Sentry๋ ์ฝ์์์ ์ค๋ฅ๋ฅผ ์ฐจ๋จํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ผ๋ง๋ ํผ๋์ค๋ฌ์ด์ง ๋ถ๋ช ํ๋ฉฐ ์๋ง๋ ๋๋ถ๋ถ์ ๋ณด์ด ์ฌ์ฉ์๊ฐ ์๋ํ์ง ์์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ค์ ์ฝ์์์ ์ค๋ฅ์ ์ผ๋ถ ํ์ ์งํฉ์ ์นจ๋ฌต์ํค๊ธฐ ์ํด ์ผํธ๋ฆฌ๋ฅผ ์ค์นํ์ง ์์ต๋๋ค.
๊ทธ๋์ ์ถ๋ก ( @kamilogorek ์์ฑ )
์ด๊ฒ์ด Node.js๊ฐ ์ค๊ณ๋ ๋ฐฉ์์ ๋๋ค.
๋์๊ฒ ์ฝ๊ฐ ๋น๋ฐ์ ๋๋ค. ์ด๊ฒ์ด ์ด๋ป๊ฒ ๋ณด์ด๊ฐ ํ๋ํด์ผ ํ๋์ง๋ฅผ ์ง์ํฉ๋๊น?
์ฌ์ฉ์๊ฐ ๋ค์์ ๋ํด ์ ๊ฒ์ผ๋ก ๊ธฐ๋ํด์ผ ํฉ๋๋ค.
a) sentrys ๋ด๋ถ ์๋(์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก)
b) ๋ ธ๋ ๋ด๋ถ ์๋(ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ๋ฉด ๊ฒฝ๊ณ ๊ฐ ์ฌ๋ผ์ง)
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ดํ์ง ์๋๋ค๋ฉด, ์ํด์ผํฉ๋๊น?
๋ฌผ๋ก "๊ธ์, ์ฌ์ฉ์๋ ์ฝ๋๊ฐ ๋ด๋ถ์์ ๋ฌด์์ ํ๋์ง ์์์ผ ํ๋ค"๋ ๋ง์ ์ณ์ง๋ง ํ์ค์ ๋ค๋ฅด๊ฒ ๋ณด์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์์ ๋ณด์ด์ ์ฌ์ฉ ํธ์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
"์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ์ ๋ํด ์ ๊ฒฝ ์ฐ์ง ์๋๋ค"๋ผ๊ณ ๋งํ๋ ๊ฒ์ ๊ด์ฐฎ์ง๋ง "๋ฒ๊ทธ๊ฐ ์๋๋ผ ๊ธฐ๋ฅ์ ๋๋ค"๋ผ๋ ์์ผ๋ก ํํํ๋ ๊ฒ์ ๋ถ์ฑ์คํด ๋ณด์ ๋๋ค.
TLDR: IMOH ์ฌ์ฉ ํธ์์ฑ์ ๋์ด๊ณ ์ด๋ณด์ ์ฌ์ฉ์์ ๋ฌธ์ ๋ฅผ ์ค์ด๋ ค๋ฉด ์ด ๋ฌธ์ ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
@OliverJash , @freeall
์ด ๋ฌธ์ ์ ์ด๋ค ์๋ฃจ์
์ ์ฌ์ฉํ์ต๋๊น?
@schhumannd ๋ก๋ ๋ฐฉ๋ฒ์์ ์ค๋ํซ์ ์ถ๊ฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ "๋ฒ๊ทธ๊ฐ ์๋๋ผ ๊ธฐ๋ฅ์ ๋๋ค"๋ผ๋ ๋๋ต์ด ๋ง์กฑ์ค๋ฝ์ง ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. Sentry๊ฐ ๋ฒ๊ทธ๋ฅผ ์ก์๋จน๊ธฐ ๋๋ฌธ์ ๋ง์ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ๋ก๊ทธ๋จ์์ ๋ฒ๊ทธ๋ฅผ ํฌ์ฐฉํ์ง ๋ชปํ ๊น๋ด ๋๋ ต์ต๋๋ค. ๋์๊ฒ Sentry์ ๊ฐ์ ๋๊ตฌ์ ์ต์ฐ์ ์์๋ ๋ฒ๊ทธ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ ์ก์๋ด๋ ๊ฒ์ด์ด์ผ ํฉ๋๋ค.
...
if (isUsingSentry) {
// Log to console because Sentry overwrites standard behavior. https://github.com/getsentry/sentry-javascript/issues/1909.
// Note that it doesn't overwrite for uncaughtException.
process.on('unhandledRejection', console.error)
}
...
๋ฐ์ ๋ค์ดํฐ๋ธ์์ ์ผํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ํดํน ์์ ์ ์ํํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. React Native๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌ๋์ด ์์ต๋๊น?
@OliverJAsh , @kamilogorek
์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์ด๊ณ ์์ ํ ์ ์์ต๋๊น?
Sentry๋ ์ฝ์์ ์ค๋ฅ๊ฐ ๊ธฐ๋ก๋๋ ๋ฐฉ์์ ์ ๋ ์๋ง์ผ๋ก ๋ง๋ค์ด์๋ ์ ๋ฉ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ์์๋ ์ฝ์ ๊ธฐ๋ก์ด ์ต์ ๋๊ธฐ ๋๋ฌธ์ Node๋ง์ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
๋๋ฒ๊น ํ๋ ค๊ณ ํ ๋ ๋งค์ฐ ์ฑ๊ฐ์ ์ผ์ด๋ฉฐ JavaScript์ฉ ๋ฌธ์์์ ์ด๊ฒ์ ์ธ๊ธํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์คํ ์ด์ง ๋น๋๋ฅผ ํ ์คํธํ๋ ๋์ ์ฝ์์ ๋ณผ ๋ ์ค๋ฅ๊ฐ ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค. ํ๋ก๋์ ์ ๋ฐฐํฌ๋ ๋๊น์ง ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๊ฒ์ ์ค๋ฅ ๋ณด๊ณ ์๋น์ค์ ๋ํ ์ ๋ง ํํธ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ด๋ฉฐ, ํ๋ณตํ ๊ณ ๊ฐ์ ์ํ๋ค๋ฉด ์์ ํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ ์ ๋งํ๋ฏ์ด ์ฝ์ ๊ฑฐ๋ถ๋ 2๊ธ ์ค๋ฅ๊ฐ ์๋๋๋ค. ๋ค๋ฅธ ์ฒ๋ฆฌ๋์ง ์์ ์ค๋ฅ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์น๋ช ์ ์ผ ์ ์์ผ๋ฉฐ ์ด๋ค ์์ผ๋ก๋ ์ต์ ๋์ด์๋ ์ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ฝ๊ฐ์ ๋๋ฒ๊น ์ ํตํด ์ฝ์ ๋ก๊น ์ด ์ต์ ๋๋ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค.
Sentry๋ window.onunhandledrejection
ํจ์๋ฅผ ํ ๋นํ๊ณ ์ฌ๊ธฐ์์ ๋ณผ ์ ์๋ฏ์ด ํด๋น ํจ์๋ false
๋ฐํํ๋ฏ๋ก ์ฝ์ ๋ก๊น
์ ๋ช
์์ ์ผ๋ก ์ต์ ํฉ๋๋ค. ์, Sentry๋ ๊ธฐ๋ณธ ๋์์ _does_ ๋ณ๊ฒฝํฉ๋๋ค. ์ด๋ ์ข์ง ์์ต๋๋ค.
์ด ์ข๊ฒ๋ ๊ธฐ์กด ํจ์์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํ๊ณ ์กด์ฌํ๋ ๊ฒฝ์ฐ ํธ์ถํฉ๋๋ค.
๋ฐ๋ผ์ ์ฝ์ ๋ก๊น
์ ๋ค์ ํ์ฑํํ๋ ํดํค ํด๊ฒฐ ๋ฐฉ๋ฒ์ Sentry๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ ์ ๋ค์ ์ค์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค.
window.onunhandledrejection = () => true;
์ด์ ์ด๊ฒ์ ์์ ํ์ฌ ๋ฌด์๋ฏธํ ํดํน ์์ด ๊ธฐ๋ณธ ๋์์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ญ์์ค ๐
@schmannd ๋ฌธ์ ๋ฅผ ๋ค์ ์ด์ด์ฃผ์ธ์
@thomas-darling ๋ธ๋ผ์ฐ์ ๋ณ๊ฒฝ์ ๋์ํฉ๋๋ค. ์ฝ์์ ๋ํด์๋ true
๋ฅผ ๋ฐํํด์ผ ํ๋ฉฐ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋
ธ๋์ ๊ฒฝ์ฐ ํ ๊ฐ์ง ์ด์ ๋ก ์์ง ํ์ ์ด ์์ง ์์ต๋๋ค. ์ฝ๋๋ฅผ ํ์ฌ ๋
ธ๋ ๊ตฌํ์ ์ฐ๊ฒฐํฉ๋๋ค. ํ๋๊ทธ์ ์์กดํ๋ ๋์ ๋ด๋ถ๋ฅผ ๋ณต์ฌํ๊ณ v14์์ ์ฝ์ ๊ฑฐ๋ถ ๋์์ด ๋ณ๊ฒฝ๋๋ฉด ํ์ฌ ์๋ ๋
ธ๋ ๋ฒ์ ์ ๊ฐ์งํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์กฐ์น๋ฅผ ์ทจํด์ผ ํฉ๋๋ค.
๋ด๋ถ์ ์ผ๋ก ๋
ธ๋๋ ๋ฆฌ์ค๋ ๋ฐฐ์ด์ ํ์ธํ๊ณ ๋ฆฌ์ค๋๊ฐ ์ ํ ์๋ ๊ฒฝ์ฐ์๋ง ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ด๊ณ ์ด ๊ฐ์ง๋ฅผ ์์ ํ ์ ์์ผ๋ฏ๋ก ๋ฆฌ์ค๋์์ ๋ฌด์์ ๋ฐํํ๋์ง๋ ์ค์ํ์ง ์์ต๋๋ค. - https://github.com/nodejs /node/blob/7cf6f9e964aa00772965391c23acda6d71972a9a/lib/internal/process/promises.js#L163 -L216
๋ธ๋ผ์ฐ์ ๋ณ๊ฒฝ๊ณผ ๊ด๋ จํ์ฌ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค :+1:
Node์ ๊ฒฝ์ฐ Sentry์์ ๋ก๊ทธ์ธ์ ์์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ค์ค๋ก ํ๋๋ก ๊ฐ์ ํฉ๋๋ค. ์ผ๋ถ๋ ์๋ชปํ๊ณ ์ผ๋ถ๋ ๋ก๊ทธ์ธ์ด ํ์ํ์ง์กฐ์ฐจ ๊นจ๋ซ์ง ๋ชปํ ์ํ์ด ์์ต๋๋ค. ๋์ฒ๋ผ ์์ฐ ๋ฒ๊ทธ์ ๋ฌผ๋ ธ๋ค. ์ข์ ๊ฐ๋ฐ์ ๊ฒฝํ์ด ์๋๋๋ค ...
@thomas-darling ์ด๋ป๊ฒ ์์ ํ์๊ฒ ์ต๋๊น? ๋ ธ๋์ ์ฝ๋ ์์ ์๋ ๋์ผํ ์ฝ๋๋ฅผ ์ฌํํ์๊ฒ ์ต๋๊น?
๋ฌธ์ ๋งจ ์์๋ ๊ธฐ๋ณธ ์ฝ์ ๋ก๊น ์ ์ป๊ธฐ ์ํด ์ํํด์ผ ํ๋ ์์ ์ ๋ํ ๋งค์ฐ ๋์ ๋๋ ๋ฉ๋ชจ๊ฐ ์์ต๋๋ค. https://docs.sentry.io/platforms/node/
๋ ธ๋ ๋์์ ๋ณต์ ํด์ผ ํ๋ ๊ฒ์ ์ ์ฌ์ ์ธ ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๊ฐ ๋ ์ ์์ผ๋ฉฐ ๋ ธ๋์ ๊ฒฝ์ฐ ๊ฐ๋จํ ๋ช ๋ น์ค ํ๋๊ทธ๋ก ํด๊ฒฐํ ์ ์๋ค๋ ์ ์ ์ดํดํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ ธ๋ ๋์์ ๋ณต์ ํ์ง ์์ผ๋ ค๋ฉด ์ต์ํ ํด๋น ํ๋๊ทธ๊ฐ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ์ฝ์์ ๊ฒฝ๊ณ ๋ฅผ ๊ธฐ๋กํ์ฌ ์ฌ์ฉ์๊ฐ ์ค๋ฅ๊ฐ ์ต์ ๋๊ณ ์์ผ๋ฉฐ ์ด๋ฅผ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์๋๋ก ํ์ญ์์ค.
์ด๊ฒ์ ์ฒ๋ฆฌ๋์ง ์์ ๊ฑฐ๋ถ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ์ถฉ๋์ํค๋ ๋ค์ ๋ฒ์ ์ ๋
ธ๋์์ ๋์ฑ ์ค์ํด์ง๋๋ค. ๋ด๊ฐ ์ดํดํ๋ ํ Sentry๊ฐ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ๋ ๋ฐ์ํ์ง ์์ต๋๋ค.
๋
ธ๋์ ์๋ก์ด ๊ธฐ๋ณธ ๋์์ ์์กดํ๋ ์ฌ์ฉ์๋ ์น๋ช
์ ์ธ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์๋ ๋ถ๊ตฌํ๊ณ ๋์ค์ Sentry๋ฅผ ์ค์นํ๊ณ ํ๋ก์ธ์ค๊ฐ ๊ฐ์๊ธฐ ๊ณ์๋๋ฉด ์ ์ฌ์ ์ผ๋ก ๋ถ์พํ ์ํฉ์ ์ฒํ ์ ์์ต๋๋ค.
์ด๋ ๋ฐ์ดํฐ ์์ค์ด๋ ๊ธฐํ ์ฌํด๋ก ์ด์ด์ง ์ ์๋ ์ข
๋ฅ์
๋๋ค.
๋ด๊ฐ ๋ณผ ๋ ๋ช ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค.
console.error
์ฐ๊ธฐ 1๋ฒ์ด๋ 2๋ฒ ๋ ๋ค ๊ด์ฐฎ์ ๊ฒ ๊ฐ์์. ๊ณ ๊ฐ์ด ์ค๋ฅ๋ฅผ ๋ณด๊ณ ์์ ํ ์ ์์ต๋๋ค.
์ ๋ ํ์ง ๋ง์์ผ ํ ๊ฒ์ ์ต์
3์
๋๋ค. ๊ณ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ณด์ง ๋ชปํ๊ณ Sentry๋ ์ค๋ฅ๋ฅผ ์์ฐ์ ํฌ์
ํฉ๋๋ค(์ค, ํ์ง๋ง ์ค๋ฅ ๋ณด๊ณ ๋๊ตฌ์ ์์ด๋ฌ๋). ์ด๊ฒ์ ํ์ฌ ๋์์ด๋ฉฐ ์ค์ ๋ก ์ค์ง๋์ด์ผ ํฉ๋๋ค! Sentry๋ ์ค๋ฅ๋ฅผ ๋ ์
ํ์ํค๋ ๊ฒ์ด ์๋๋ผ ์ค๋ฅ๋ฅผ ์ก๋ ๋ฐ ๋์์ ์ฃผ์ด์ผ ํฉ๋๋ค.
์ต์ 2๋ฅผ ์ ํํ๋๋ผ๋ ์ต์ํ ๊ฐ๋ฐ์๋ ๊ฑฐ๋ถ๋ฅผ ํ์ธํ๊ณ ๋ค๋ฅธ ๋์(์: ์ถฉ๋)์ ์ํ๊ณ ๊ตฌํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฑฐ์ ์ด ์์๋ค๋ ์ฌ์ค์กฐ์ฐจ ์์ง ๋ชปํ ์ฑ, ๊ทธ๋ค์ ๊ทธ๊ฒ์ ๋ํด ๋ณ๋ก ํ ์ ์๋ ๊ฒ์ด ์์ต๋๋ค.
์ด ์์
์ ์ํํด์ผ ํฉ๋๋ค. https://github.com/getsentry/sentry-javascript/pull/2312
์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์์ผ๋ฏ๋ก ๊ณ ์ ํ ์ฝ๋ฐฑ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ถ๊ฐํ์ง ์์์ต๋๋ค.
```js
Sentry.init({
ํตํฉ: [
์๋ก์ด Sentry.Integrations.OnUnhandledRejection({
๋ชจ๋: '์์'
})
]
});
process.on('์ฒ๋ฆฌ๋์ง ์์ ๊ฑฐ๋ถ', (์ด์ ) => {
// ์ฝ๋ฐฑ
})
๋์๊ฒ ๊ฒฐ๊ณผ๋ TypeError: undefined is not a constructor
์
๋๋ค. ์ง๊ธ @sentry/react-native
ํจํค์ง๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. Btw ํด๋น ํจํค์ง์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๊น?
@schhumannd @sentry/react-native
๋ @sentry/node
๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์ด ํตํฉ์ด ์์ต๋๋ค. ์ด๋ฅผ ์ํด sentry/browser๋ฅผ ๋ฆด๋ฆฌ์คํ ํ ๋ฒ์ ์ ์
๋ฐ์ดํธํ๊ธฐ๋ง ํ๋ฉด ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค(ํธ๋ค๋ฌ์์ true
๋ฅผ ๋ฐํํ๋ ๋ณ๊ฒฝ์ ๊ธฐ๋ณธ์ ์ด๋ฉฐ ๊ตฌ์ฑํ ์ ์์).
@kamilogorek ์์๊น ๐
์ด๋ ๊ฒ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ด ๋ฆด๋ฆฌ์ค๋๋ฉด ์ฌ๊ธฐ์์ pingํ ์ ์์ต๋๊น?
@OliverJash ํ :)
๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋์ง ํ์ธํ๊ธฐ ์ํด: Node์ --unhandled-rejections=strict
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด Node๊ฐ ์ฒ๋ฆฌ๋์ง ์์ ๊ฑฐ๋ถ๋ฅผ ์์ธ๋ก ๋ฐ์์ํจ ๋ค์ Sentry๊ฐ ํด๋น ์์ธ๋ฅผ ๊ฐ๋ก์ฑ์ ๋ณด๊ณ ํฉ๋๊น? ๊ทธ๊ฒ์ด ๋ด๊ฐ ๋ณด๊ณ ์๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
--unhandled-rejections=strict
ํ์ฑํ๋ฅผ ์๋ํ์ ๋ OnUnhandledRejections
ํตํฉ์ด ํจ๊ณผ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์๊ธฐ ๋๋ฌธ์ ์ง๋ฌธํฉ๋๋ค. ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ํธ์ถ๋์ง ์์์ต๋๋ค.
์ด๊ฒ์ ๋ํด ๋ช ๊ฐ์ง ๋ฌธ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค!
๋ฌธ์ PR์ ์ด๋ฏธ ์งํ ์ค์ ๋๋ค https://github.com/getsentry/sentry-docs/pull/1351/
@OliverJAsh ์ด ๋ณ๊ฒฝ ์ฌํญ์ cli ํ๋๊ทธ์ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ทธ ํ๋์ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค. ๋ณ๊ฒฝ๋ ์ฌํญ์ OnUnhandledRejection
ํตํฉ์ cli ํ๋๊ทธ์ฒ๋ผ ์๋ํ๋๋ก ํ๋ ์๋ก์ด ์ต์
์ด ์๋ค๋ ๊ฒ์
๋๋ค.
Sentry.init({
integrations: [
new Sentry.Integrations.OnUnhandledRejection({
mode: 'none'
})
]
});
--unhandled-rejection=none
์ (๊ฐ๋
์ ์ผ๋ก) ๋์ผํ๊ณ warn
๋ฐ strict
๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
warn
(ํ์ฌ ๊ธฐ๋ณธ๊ฐ)๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฝ๊ณ ๋ฐ ์ค๋ฅ ์์ฒด๋ฅผ ๊ธฐ๋กํ์ง๋ง ํ๋ก์ธ์ค๋ ํ์ฑ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
strict
๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํ๊ณ ์บก์ฒํ๊ณ ํ๋ฌ์ํ๊ณ (์ ๋ฌ๋ ๋๊น์ง ๋๊ธฐ) ์ข
๋ฃ ์ฝ๋ 1๋ก ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํฉ๋๋ค.
๊ทธ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ํตํฉ์ด ๋ ธ๋ ํ๋๊ทธ์ ๋์์ ๋ณ๊ฒฝํ์ง ์๋๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ ธ๋ ํ๋๊ทธ์ ๊ด๋ จํ์ฌ Sentry๊ฐ (์ด ํตํฉ ์ธ๋ถ์์) ์ด๋ป๊ฒ ์๋ํ๋์ง ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์๋์ง ํ์ธํ ์ ์์ต๋๊น?
๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋์ง ํ์ธํ๊ธฐ ์ํด: Node์ --unhandled-rejections=strict ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด Node๊ฐ ์ฒ๋ฆฌ๋์ง ์์ ๊ฑฐ๋ถ๋ฅผ ์์ธ๋ก ๋ฐ์์ํจ ๋ค์ Sentry๊ฐ ํด๋น ์์ธ๋ฅผ ๊ฐ๋ก์ฑ์ ๋ณด๊ณ ํฉ๋๊น? ๊ทธ๊ฒ์ด ๋ด๊ฐ ๋ณด๊ณ ์๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@schhumannd ์ฐธ๊ณ ๋ก, ์ค๋ ์์นจ์ ์ฐ๋ฆฌ๋ @sentry/react-native 1.10.0
[EDIT: whoops, should be 1.1.0
]๋ฅผ ์ถ์ํ์ต๋๋ค. ์ด๋ @sentry/browser
์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ์ข
์์ฑ์ ์
๋ฐ์ดํธํฉ๋๋ค(๋ฐํ ํฌํจ - true
-๋์ - false
์์์ ์ธ๊ธํ ์์ ).
@lobsterkatie @sentry/react-native์ ์ต์ ๋ฆด๋ฆฌ์ค๋ 1.3.7 ์ธ
๋ฐ๋ผ์ 1.10.0์ ์ค์นํ๋ ค๊ณ ํ๋ฉด ์๋ํ์ง ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
@schhumannd @lobsterkatie ๋ 1.1.0
์๋ฏธํ์ต๋๋ค. 5.9.0
of @sentry/browser
์
๋ฐ์ดํธํ์ ๋์ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ๋ก๊น
์์ค์ ์ค์ ํ๋ ์ฒ๋ฆฌ๊ธฐ ์ต์
์ ์ต์ ๋ฒ์ ์ @sentry/react-native
์์๋ ์ ์๋ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
uncaughtException
์unhandledRejection
๊ฐ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋ ๊ฒ์ด ์ฌ์ ํ ์ด์ํฉ๋๋ค. Sentry๋uncaughtException
๋ํ ๋ก๊น ์ ๋ณต์ํฉ๋๋ค. โunhandledRejection
๋ํด ๋์ผํ ์์ ์ ์ํํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ฌ์ฉ์๋ ํด๋น ๋ ธ๋ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ธฐ์ตํ ํ์๊ฐ ์์ต๋๋ค. ๐ค