@sentry/browser
@sentry/node
raven-js
raven-node
_ïŒããŒãã®ã¬ã€ãŽã³ïŒ_4.6.1
ç®±ããåºããŠãããŒãã¯æªåŠçã®ãããã¹æåŠããã°ã«èšé²ããŸãã ãã ããSentryãåæåãããšããããã®ãã°ã¯è¡šç€ºãããªããªããŸãã ããã¯ã unhandledRejection
ãã³ãã©ãŒãååšããå ŽåãããŒããæåŠããã°ã«èšé²ãããSentryããã®ãããªãã³ãã©ãŒãç»é²ãŸãã
Sentryããã³ãã©ãŒã«ãã°ãè¿œå ããŠãç®±ããåºããŠæäŸããããšã¯ã¹ããªãšã³ã¹ãšåçã®æ©èœãæäŸããããšããå§ãããŸãã å°ãªããšããããã¥ã¡ã³ãã«ã¯ãã®åäœãšããã®ã³ã°ã埩å ããããã®ãã³ãã©ãŒãæåã§è¿œå ããå¿ èŠæ§ã«ã€ããŠèšèŒããå¿ èŠããããŸãã
è¯ãããã«èãããŸããããããdebug: true
ãã©ã°ã®èåŸã«ããã¹ããã©ããã¯ããããŸããã
æåŸã«ããšã©ãŒã¹ããªãŒã ãSentryã«ãªãã€ã¬ã¯ããããšã©ãŒãã³ãã©ãŒãæèçã«ã¢ã¿ããããŸãã
ç§ãããããããŸããã
Sentryãæå¹ã«ããŠãããã£ãããããªãã£ãäŸå€ã®ãã®ã³ã°ãç¡å¹ã«ããå¹æã¯ãããŸããããããã£ãŠãæªåŠçã®PromiseæåŠã«ã€ããŠãåãããšãåœãŠã¯ãŸãã¯ãã§ãã ïŒãã ãããã®åäœã®éãã¯ãSentryãããNodeã®æ¹ãäžè²«æ§ããããŸãããïŒ
Sentryãæå¹ã«ãããšããšã©ãŒãå ±åãããŠããããšã¯ç解ã§ããŸãããç¹ã«éçºè ã§ã¯ãã³ã³ãœãŒã«ãã°ãå¥ã®ãã®ãšèããåŸåããããŸãã ð€
ããã©ã«ãã®ãã®ã³ã°åäœã¯å€æŽããŸããããã£ãããããªãäŸå€ã®å Žåããã°åŒã³åºããããªã¬ãŒããã®ã¯ããŒãèªäœã§ãã
ããã§ã®æåã®è§£æ±ºçã¯ãããã¥ã¡ã³ãã«ããã«ã€ããŠã¡ã¢ããŠãæ®ãããšã ãšæããŸã
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at:', p, 'reason:', reason);
});
誰ããèŠåãå床æå¹ã«ãããå Žåã®ã¹ããããã
ããã¥ã¡ã³ãã§ååã§ãã å°ãªããšããã»ã³ããªãŒã¯ç¹å¥ãªããšã¯äœãããŠããŸããã ããã§åé¡ã«ãªãã®ã¯æ¬åœã«ããŒãã§ãã
ãŸãã¯ãã£ãããããªãã£ãäŸå€ã¯ããã°åŒã³åºããããªã¬ãŒããŠããã®ã¯ããŒãèªäœã§ãã
èãçŽããŠã¿ããšããããæ¬åœãã©ããã¯ããããŸããã
Sentryã¯ãããã©ã«ãã®ããŒãåäœïŒãã°+çµäºïŒãç¡å¹ã«ããuncaughtException
ãã³ãã©ãŒãç»é²ããŸãã
ãã³ãã©ãŒïŒ defaultOnFatalError
ïŒã¯ãç¬èªã®ãã°åŒã³åºããããªã¬ãŒããŸãïŒ https ïŒ
ãã£ãããããªãã£ãäŸå€ã®ãã®ã³ã°ãã埩å ãããŠããå ŽåãæªåŠçã®ãããã¹ã®æåŠã«å¯ŸããŠãåãããšãè¡ãå¿ èŠããããšæããŸãã
ãããåéã§ããŸããïŒ ç§ã®æåŸã®ã³ã¡ã³ãã«ãããšãSentryã¯ããã£ãããããŠããªãäŸå€ã®å Žåãšåæ§ã«ãæªåŠçã®PromiseæåŠã®ãã°ã埩å ããå¿ èŠããããšèããŠããŸãã
ãã®åé¡ãèŠã€ããã®ã¯ãSentryã䜿ãå§ãããšãã«ã uncaughtException
ããã°ã«ããã unhandledRejection
ãªããããã³ãŒããééããã®ã§ã¯ãªãããšæã£ãããã§ãã ãããã®2ã€ã®ã±ãŒã¹ãåãããã«åŠçããããšã¯éåžžã«çã«ããªã£ãŠããŸãã
ãããã£ãŠãäž¡æ¹ããã°ã«èšé²ããããã©ã¡ãããã°ã«èšé²ããªããšèšããŸãã
Nodeã®ã³ã¢ããã³ãŒããã³ããŒãããããããããåŠçããããã®ããè¯ãæ¹æ³ãèŠã€ããŸããã
λ: node --unhandled-rejections=warn app.js
ãŸããã¡ã€ã³ã®ããã¥ã¡ã³ãããŒãžhttps://github.com/getsentry/sentry-docs/pull/1099ã«å«ããããšã§æããã«ããŸãã
uncaughtException
ãšunhandledRejection
åŠçãç°ãªãã®ã¯ããŸã å¥åŠã ãšæããŸãã Sentryã¯uncaughtException
ãã°ã埩å
ããŸããªãunhandledRejection
ã§ãåãããšãããªãã®ã§ããïŒ ãŠãŒã¶ãŒã¯ããã®ããŒããã©ã°ã䜿çšããããšãèŠããŠããå¿
èŠã¯ãããŸããã ð€
unhandledRejectionã«å¯ŸããŠåãããšãããªãã®ã¯ãªãã§ãã
1ã€ã¯éèŠã§ããïŒ unhandledException
ã¯ããã»ã¹ã匷å¶çµäºããŸãïŒããã1ã€ã¯æ
å ±æäŸã§ããããïŒãããã£ãŠããšã©ãŒã§ã¯ãªãèŠåã§ãïŒã
é åºãéã«ããŠããã©ã«ãã§èŠåãçºè¡ãããšã --unhandled-rejections
ãnone
ã«èšå®ãããŠããã«ãããããããCLIã®åäœãäžæãããŸãã çŸåšãå
¬åŒã®ããŒãããã¥ã¡ã³ãã«ããã°ããã¹ãŠãæåŸ
ã©ããã«æ©èœããŸãã ãã®å€æŽã«ãããéæšæºã«ãªããŸãã
NodeãunhandledRejection
ãããã»ã¹ã匷å¶çµäºããããšã決å®ãããïŒ4ã€ã®ããŒãžã§ã³ã§ã¯çŸåšïŒPãšèšãããŠããŸãïŒãå
¬åŒã®ä»æ§ã«ãäžèŽããããã«å€æŽãå ããŸãã
é åºãéã«ããŠããã©ã«ãã§èŠåãçºãããšãCLIã®åäœãäžæãããŸã
@kamilogorekã§ããã node
ã§å®è¡ãããšã unhandledRejection
ããconsole
ãã°ãèšé²ãããŸãã ãããã£ãŠãå
¬åŒã®ããŒãããã¥ã¡ã³ãã«äœãèšèŒãããŠãããã¯ããããŸããããå°ãªããšããããç§ãæ°ä»ããåäœã§ãã
@freeallã¯ã unhandledRejection
ãã³ãã©ãŒãã¢ã¿ããããªãå Žåã®ã¿ã 以äžã®ã³ãŒããå®è¡ãããšãSDKããªããŠããã°ã«èšé²ãããªããããå®è¡ããŠããã³ãŒãã«æ³šæããå¿
èŠããããŸãã
process.on('unhandledRejection', () => `¯\_(ã)_/¯`);
ãããŠãç§ãã¡ã¯ããã§ãããè¡ãããšãéåžžã«æ確ã«è¿°ã¹ãŠããŸãïŒ https ïŒ
ã·ã¹ãã çµ±åã¯ãããã©ã«ãã§æå¹ã«ãªã£ãŠããçµ±åã§ãããæšæºã©ã€ãã©ãªãŸãã¯ã€ã³ã¿ãŒããªã¿ãŒèªäœã«çµåãããŸãã ãããã¯ææžåãããŠããã®ã§ãããããäœãããã®ãã確èªã§ããåé¡ãçºçããå Žåã¯ç¡å¹ã«ã§ããŸãã
OnUnhandledRejection
ãã®çµ±åã«ãããã°ããŒãã«ãªæªåŠçã®æåŠãã³ãã©ãŒãã¢ã¿ãããããŸãã
ããŒãã®åäœãå€æŽããããªãã ãã§ããããã ãã§ãã ãããŠãåäœã¯æ¬¡ã®ãšããã§ããããªã¹ããŒãããå Žåã¯ãåºåããªãã§ãã ãããããã§ãèŠåãå¿ èŠãªå Žåã¯ããã©ã°ã䜿çšããŠãã ãããã -ãããŠããã¯ãŸãã«ç§ãã¡ãããŠããããšã§ãã
@kamilogorekç§ã¯ããªããã©ãããæ¥ãŠããã®ãç解ããŠããŸãã ããããSentryã®ãŠãŒã¶ãŒã¯ãSentryãããã°ã©ã ã®åäœãå€æŽããªãããšãæåŸ ããŠãããšæããŸãã
Sentryãªãã§unhandledRejection
ãæã£ãŠããå Žåãã³ã³ãœãŒã«ã«è¡šç€ºãããŸãã
Sentryã§unhandledRejection
ã䜿çšããŠããå Žåãã³ã³ãœãŒã«ã«è¡šç€ºãããŸããã
ç§ã¯å人çã«ã»ã³ããªãŒãè¡åãå€ããã®ã奜ãã§ã¯ãããŸããã
ããããããã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ãããã°ã©ã ã®åäœãå€æŽããªãããšãæåŸ ããŠãããšæããŸãã
ãã£ãããããŠããªãçŽæã®æåŠã¯ããã»ã«ã³ãã¯ã©ã¹ã®ãšã©ãŒãã§ã¯ãããŸããã éåžžã®ãšã©ãŒãšåãããã«ãã¢ããªãç Žæããå¯èœæ§ããããŸãã
äœäººãã®ãŠãŒã¶ãŒïŒç§ãå«ãïŒããã®åé¡ã«ééããããã§ãå°æ¥ããã«å€ãã®ãŠãŒã¶ãŒããã®åé¡ã«ééããã§ãããã
èŠçŽãããšãSentryã¯ã³ã³ãœãŒã«ããã®ãšã©ãŒãæ¶é³ããŸãã ãããŠããããã©ã®ããã«æ··ä¹±ããŠããã®ãã¯æããã§ãããããããã»ãšãã©ã®æ©åšãŠãŒã¶ãŒã«ãã£ãŠæå³ãããŠããªããšæããŸãã 圌ãã¯ãã³ã³ãœãŒã«ãããšã©ãŒã®ãµãã»ãããæ¶é³ããããã«æ©åšãã€ã³ã¹ããŒã«ããŸããã
ãããã£ãŠãæšè«ïŒ @kamilogorekã«ããïŒ
ãããNode.jsã®èšèšæ¹æ³ã§ã
ç§ã«ã¯å°ãäžå¯è§£ã§ãã ããã¯æ©åšã®æ¯ãèããã©ã®ããã«æ±ºå®ããŸããïŒ
ãŠãŒã¶ãŒã次ã®ããšãç¥ã£ãŠããããšãæåŸ ããå¿ èŠããããŸãã
aïŒæ©åšã®å éšåäœïŒã€ãã³ããã³ãã©ãŒãç»é²ããŸãïŒ
bïŒããŒãã®å éšåäœïŒãã³ãã©ãŒãè¿œå ãããšèŠåãæ¶ããŸãïŒ
ãããŠãããã§ãªãå Žåã¯ããããã¹ãã§ããïŒ
ãã¡ãããããŠãŒã¶ãŒã¯ã³ãŒããå éšã§äœãããã®ããç¥ã£ãŠããå¿ èŠããããŸãããšèšã£ãŠããã®ã¯æ£ããã§ãããçŸå®ã¯ç°ãªã£ãŠèŠããŸãã ãããŠãããã§ã¯æ©åšã®äœ¿ãããããåäžããããã©ããã決ããæ©äŒããããŸãã
ããã®ç¹å®ã®åé¡ã¯æ°ã«ããªãããšèšã£ãŠã倧äžå€«ã§ãããããã°ã§ã¯ãªããæ©èœã§ãããšãããããªæ¹æ³ã§æãã®ã¯äžèª å®ã«æããŸãã
TLDRïŒIMOH䜿ãããããåäžãããåå¿è ãŠãŒã¶ãŒã®åé¡ãæžããããå Žåã¯ããããä¿®æ£ããå¿ èŠããããŸãã
@ OliverJAsh ã@ freeall
ãã®åé¡ã«å¯ŸããŠã©ã®ãããªè§£æ±ºçã䜿çšããŸãããïŒ
@schumanndããŒãæ¹æ³ã®ã¹ãããããè¿œå ããŸããã ãããŠãããã°ã§ã¯ãªããæ©èœã ããšããçãã¯æºè¶³ã®ãããã®ã§ã¯ãªãããã«æãããããšã«åæããŸãã ã»ã³ããªãŒããã°ãé£ã¹ãŠããŸãã®ã§ãå€ãã®ããã°ã©ããŒãããã°ã©ã ã®ãã°ãèŠã€ããããªãã®ã§ã¯ãªãããšå¿é ããŠããŸãã ç§ã«ãšã£ãŠã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)
}
...
ç§ã¯reactnativeã§æ©åšã䜿çšããŠããã®ã§ããã®åé¡ãä¿®æ£ããããã«
@ OliverJAsh ã@ kamilogorek
ãããåéããŠä¿®æ£ããŠããããŸããïŒ
Sentryã¯ãã³ã³ãœãŒã«ã§ã®ãšã©ãŒã®ãã°èšé²æ¹æ³ãå®å šã«æ··ä¹±ãããã¹ãã§ã¯ãããŸãããã³ã³ãœãŒã«ã®ãã°èšé²ã¯ãã©ãŠã¶ãŒã§ãæå¶ããããããããã¯Nodeã®åé¡ã ãã§ã¯ãããŸããã
ãããã°ããããšãããšéåžžã«ç ©ããããJavaScriptã®ããã¥ã¡ã³ãã§ããã«ã€ããŠèšåããŠããªãã£ããããã¹ããŒãžã³ã°ãã«ãã®ãã¹ãäžã«ã³ã³ãœãŒã«ã調ã¹ããšãã«ãšã©ãŒãçºçããŠããªããšå®éã«æã£ããããæ°ã¥ããŸããã§ãããæ¬çªç°å¢ã«ãããã€ããããŸã§ããšã©ãŒãçºçããŸããã ããã¯ããšã©ãŒå ±åãµãŒãã¹ã«ãšã£ãŠæ¬åœã«ãã ããªããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã§ãããæºè¶³ã®ãã顧客ãå¿ èŠãªå Žåã¯ä¿®æ£ããå¿ èŠããããŸãã
ãããŠåã«è¿°ã¹ãããã«ãçŽæã®æåŠã¯äºæµã®ãšã©ãŒã§ã¯ãããŸãã-ãããã¯ä»ã®æªåŠçã®ãšã©ãŒãšåãããã«èŽåœçã§ããå¯èœæ§ãããããããªãæ¹æ³ã§ãæå¶ãããã¹ãã§ã¯ãããŸããã
ãããã£ãŠãå°ããããã°ãããšãã³ã³ãœãŒã«ãã°ãæå¶ãããçç±ãæããã«ãªããŸãã
Sentryã¯é¢æ°ãwindow.onunhandledrejection
ã«å²ãåœãŠãŸããããã«ç€ºãããã«ããã®é¢æ°ã¯false
è¿ããããã³ã³ãœãŒã«ã®ãã°ãæ瀺çã«æå¶ãããŸãã ããã§ãããSentryã¯ããã©ã«ãã®åäœãå€æŽããŸã-ããã¯ã¯ãŒã«ã§ã¯ãããŸããã
幞ããæ¢åã®é¢æ°ãžã®åç
§ãæ ŒçŽããååšããå Žåã¯ãããåŒã³åºããŸãã
ãããã£ãŠãã³ã³ãœãŒã«ãã®ã³ã°ãå床æå¹ã«ããããã®ããããŒãªåé¿çã¯ãSentryãåæåããåã«æ¬¡ã®è¡ãè¿œå ããããšã§ãã
window.onunhandledrejection = () => true;
ããŠããããä¿®æ£ããŠãã ãããããããã°ããã®ãããªç¡æå³ãªãããã³ã°ãªãã§ããã©ã«ãã®åäœãå®çŸã§ããŸãð
@schumanndåé¡ãåéããŠãã ãã
@ thomas-darlingãã©ãŠã¶ã®å€æŽã«åæããŸããpromiseã«å¯ŸããŠãtrue
ãè¿ãããã¯ãã§ãããå€æŽã§ããŸãã
ãã ããããŒãã«ã€ããŠã¯ã1ã€ã®çç±ã§ãŸã 確信ãæãŠãŸããã ã³ãŒããçŸåšã®ããŒãå®è£
ã«çµã³ä»ããŸãã ãã©ã°ã«äŸåãã代ããã«å
éšãã³ããŒããv14ã§æåŠåäœãå€æŽãããããšãçŽæããå Žåã¯ãçŸåšã®ããŒãã®ããŒãžã§ã³ãæ€åºããããã«å¿ããŠåäœããå¿
èŠããããŸãã
å
éšããŒãã¯ãªã¹ããŒé
åããã§ãã¯ãããªã¹ããŒããŸã£ãããªãå Žåã«ã®ã¿èŠåãçºããããããªã¹ããŒããäœãè¿ããã¯éèŠã§ã¯ãããŸããããã®æ€åºã¯å€æŽã§ããŸãã-httpsïŒ//github.com/nodejs /node/blob/7cf6f9e964aa00772965391c23acda6d71972a9a/lib/internal/process/promises.js#L163 -L216
ãã©ãŠã¶ã®å€æŽã«é¢ããŠã¯è¯ãããã§ãïŒ+1ïŒ
ããŒãã«é¢ããŠã¯ãSentryã§ã®ãã°ã€ã³ãä¿®æ£ããªããšãåºæ¬çã«ãã¹ãŠã®ãŠãŒã¶ãŒã«èªåã§ãã°ã€ã³ã匷å¶ããã ãã§ããäžéšã®ãŠãŒã¶ãŒã¯ééã£ãŠãã°ã€ã³ããäžéšã®ãŠãŒã¶ãŒã¯ãããå¿ èŠã§ããããšã«æ°ä»ããªãå¯èœæ§ããããŸããç§ãããããã«ããããã¯ã·ã§ã³ãã°ã«åãŸããŸãã ããã¯è¯ãéçºè äœéšã§ã¯ãããŸãã...
@ thomas-darlingã©ããã£ãŠãããä¿®æ£ãããã§ããïŒ ããŒãã®ã³ãŒãå ã«ããã®ãšåãã³ãŒããåçŸããŸããïŒ
ããã¥ã¡ã³ãã®æäžéšã«ã¯ãããã©ã«ãã®ã³ã³ãœãŒã«ãã°ãååŸããããã«äœããã¹ããã«ã€ããŠã®éåžžã«ç®ã«èŠããã¡ã¢ããããŸã-https ïŒ//docs.sentry.io/platforms/node/
ç§ã¯ããªãã®ãã€ã³ããç解ããŠããŸã-ããŒãã®åäœãè€è£œããå¿ èŠãããããšã¯æœåšçãªã¡ã³ããã³ã¹ã®åé¡ã§ãããããŒãã®å Žåãããã¯åçŽãªã³ãã³ãã©ã€ã³ãã©ã°ã§è§£æ±ºã§ããã®ã«åœ¹ç«ã¡ãŸãã
ãã ããããŒãã®åäœãè€è£œããããªãå Žåã¯ãå°ãªããšããã®ãã©ã°ãæå®ãããŠããªããšãã«ã³ã³ãœãŒã«ã«èŠåããã°ã«èšé²ããŸããããã«ããããŠãŒã¶ãŒã¯ãšã©ãŒãæå¶ãããŠããããšãšããããåé¿ããæ¹æ³ãèªèã§ããŸãã
ããã¯ãããŒãã®æ¬¡ã®ããŒãžã§ã³ã§ããã«éèŠã«ãªããŸãããã®ããŒãžã§ã³ã§ã¯ãæªåŠçã®æåŠãããã©ã«ãã§ããã»ã¹ãã¯ã©ãã·ã¥ãããŸããããã¯ãç§ãç解ããŠããããã«ãSentryããã³ãã©ãŒãè¿œå ãããšãã«çºçããŸããã
ããŒãã§ã®æ°ããããã©ã«ãã®åäœã«äŸåããŠãããŠãŒã¶ãŒã¯ãåŸã§Sentryãã€ã³ã¹ããŒã«ããèŽåœçãªãšã©ãŒãçºçããã«ããããããããã»ã¹ãçªç¶ç¶è¡ããããšãåä»ãªé©ããæãå¯èœæ§ããããŸãã
ããã¯ãããŒã¿ã®æ倱ããã®ä»ã®çœå®³ã«ã€ãªããå¯èœæ§ã®ããçš®é¡ã®ããšã§ãã
ç§ãèŠãŠããããã«ãããã€ãã®ãªãã·ã§ã³ããããŸãïŒ
console.error
ã«æžã蟌ãã ãã§ãããªãã·ã§ã³1ãŸãã¯2ã¯ã©ã¡ããåé¡ãªããšæããŸãã 顧客ã¯ãšã©ãŒã確èªããŠä¿®æ£ã§ããŸãã
絶察ã«ãã¹ãã§ã¯ãªãã®ã¯ãªãã·ã§ã³3ã§ãããã®å Žåã顧客ã«ã¯ãšã©ãŒã衚瀺ããããSentryã«ãã£ãŠãšã©ãŒãæ¬çªç°å¢ã«ç§»è¡ããŸãïŒãã ãããšã©ãŒå ±åããŒã«ã®ç®èã§ãïŒã ããã¯çŸåšã®åäœã§ãããããã¯æ¬åœã«åæ¢ããã¯ãã§ãïŒ ã»ã³ããªãŒã¯ããšã©ãŒãæªåãããã®ã§ã¯ãªãããšã©ãŒãèŠã€ããã®ã«åœ¹ç«ã€ã¯ãã§ãã
ãªãã·ã§ã³2ãéžæããå Žåã§ããå°ãªããšãéçºè ã¯æåŠã確èªããå¥ã®åäœïŒã¯ã©ãã·ã¥ãªã©ïŒãå¿ èŠã§ããããšã«æ°ä»ãããããå®è£ ã§ããŸãã ããããæ絶ããã£ãããšããç¥ããªããã°ã圌ãã¯ããã«ã€ããŠå€ããããããšãã§ããŸããã
ããã§ããŸãããã¯ãã§ãã https://github.com/getsentry/sentry-javascript/pull/2312
以äžã®ã³ãŒããæžããšãŸã£ããåãå¹æããããããç¬èªã®ã³ãŒã«ããã¯ãè¿œå ããæ¹æ³ã¯è¿œå ããŸããã§ããã
`` `js
Sentry.initïŒ{
çµ±åïŒ[
new Sentry.Integrations.OnUnhandledRejectionïŒ{
ã¢ãŒãïŒ 'ãªã'
}ïŒ
]
}ïŒ;
process.onïŒ 'unhandledRejection'ãïŒreasonïŒ=> {
//ã³ãŒã«ããã¯
}ïŒ
ç§ã«ãšã£ãŠã¯TypeError: undefined is not a constructor
ãŸãã @sentry/react-native
ããã±ãŒãžã䜿çšããŠãããããããããŸããã ãšããã§ããã®ããã±ãŒãžã«ãåãåé¡ããããŸããïŒ
@schumannd @sentry/react-native
ã¯@sentry/node
ã䜿çšããªãããããã®çµ±åã¯ãããŸããã ãã®ããã«ã¯ãæ©åš/ãã©ãŠã¶ããªãªãŒã¹ãããããŒãžã§ã³ãæŽæ°ããå¿
èŠããããããã¯åé¡ãªãæ©èœããŸãïŒãã³ãã©ãŒããtrue
ãè¿ãããã«å€æŽããã®ã¯ããã©ã«ãã§ãããæ§æã§ããŸããïŒã
@kamilogorekã¯ç§ã«ã¯äŒŒåããŸãð
ãããããŠãããŠããããšãïŒ ããããªãªãŒã¹ãããããããã§pingãå®è¡ã§ããŸããïŒ
@OliverJAsh ping :)
æ£ããç解ããŠããããšã確èªããããã«ãNodeã®--unhandled-rejections=strict
ãã©ã°ã䜿çšãããšãNodeã¯æªåŠçã®æåŠãäŸå€ãšããŠçºçãããSentryã¯ãã®äŸå€ãã€ã³ã¿ãŒã»ããããŠå ±åããŸããïŒ ãããç§ãèŠãŠãããšæããã®ã§ãã
--unhandled-rejections=strict
æå¹ã«ããããšãããšãã OnUnhandledRejections
çµ±åã¯å¹æããªãã£ãããã§ãã€ãã³ããªã¹ããŒãåŒã³åºãããªãã£ãããã§ãã
ããã«é¢ããããã¥ã¡ã³ããè¿œå ã§ããã°çŽ æŽããããšæããŸãã
ããã¥ã¡ã³ãPRã¯ãã§ã«é²è¡äžã§ãhttps://github.com/getsentry/sentry-docs/pull/1351/
@OliverJAshãã®å€æŽã¯ã 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ã¯ãã®äŸå€ãã€ã³ã¿ãŒã»ããããŠå ±åããŸããïŒ ãããç§ãèŠãŠãããšæããã®ã§ãã
@schumanndåèãŸã§ã«ãä»æã @sentry/react-native 1.10.0
[ç·šéïŒwhoopsãshould be 1.1.0
]ããªãªãŒã¹ããŸãããããã¯ãææ°ããŒãžã§ã³ã®@sentry/browser
ã䜿çšããããã«äŸåé¢ä¿ãæŽæ°ããŸãïŒãªã¿ãŒã³ãå«ãïŒ - true
代ããã«-äžèšã®false
ä¿®æ£ïŒã
@lobsterkatie @ 1.3.7ã®ããã§ãã ã
ãããã£ãŠã1.10.0ãã€ã³ã¹ããŒã«ããããšããŠãæ©èœããŸããã ã©ãããã°ä¿®æ£ã§ããŸããïŒ
@schumannd @lobsterkatieã¯1.1.0
æå³ããŸãããããã¯ã @sentry/browser
5.9.0
ã«æŽæ°ãããšãã§ãã ãã®ã³ã°ã®ã¬ãã«ãèšå®ãããã³ãã©ãŒãªãã·ã§ã³ã¯ãæè¿ã®ããŒãžã§ã³ã®@sentry/react-native
ã§ãåé¡ãªãæ©èœããã¯ãã§ãã
æãåèã«ãªãã³ã¡ã³ã
uncaughtException
ãšunhandledRejection
åŠçãç°ãªãã®ã¯ããŸã å¥åŠã ãšæããŸãã Sentryã¯uncaughtException
ãã°ã埩å ããŸããªãunhandledRejection
ã§ãåãããšãããªãã®ã§ããïŒ ãŠãŒã¶ãŒã¯ããã®ããŒããã©ã°ã䜿çšããããšãèŠããŠããå¿ èŠã¯ãããŸããã ð€