Stack Overflowã®ãã®ã¹ã¬ããã§èª¬æãããŠããããã«ã window.onerror
ã«éä¿¡ãããç¹å®ã®ã€ãã³ãã«ããã [object Event]
ãã¡ãã»ãŒãžãšããŠãã°ã«èšé²ãããŸãã ã»ã³ããªãŒããããã®å€ä»£ã®Event
ãªããžã§ã¯ããæ€åºãããããããããã€ãã®è©³çŽ°ãæãäžããŠãã»ã³ããªãŒã«èšé²ããããã®ãç§ãã¡ãè¡åããŠä¿®æ£ãè©Šã¿ãããšãã§ããäœããç解ã§ããããã«ãªãã°ãããã¯çŽ æŽãããããšã§ãã
ãã°ããã®1ã€ã®ç¹å®ã®ãµã³ãã«ã¯ã次ã®æ å ±ã瀺ããŠããŸãã
Android 4.1ãã4.4ãŸã§ã®Androidãã©ãŠã¶ãŒããããããµãŒãããŒãã£ã®Androidãã©ã³ïŒSamsungãHTCãªã©ïŒããã®Aâândroidãã©ãŠã¶ãŒãããã®åé¡ã®åœ±é¿ãåããŠããããšã確èªã§ããŸãã Nexusãã©ã³ã圱é¿ãåããŠãããã©ããã確èªã§ããŸããã
ããã¯å
¥æããã®ã«æé©ãªæ©èœã§ãããå®è£
ããã®ã¯æ¯èŒçé£ããããšã§ã¯ãªãããã§ãã ããããã message.toString() == '[object Event]'
ãç°¡åã«ãã§ãã¯ããŠããã for-in
ã«ãŒããå®è¡ããŠã€ãã³ããªããžã§ã¯ãã®ããããã£ã«ã¢ã¯ã»ã¹ããŸãã ããã¯ãAndroid4.1-4.4ã®ãµã€ãã§åé¡ããããã°ããã®ã«åœ¹ç«ã¡ãŸãã
@ d10 âç§ã¯ãããå®éšããŸãããããããæ©èœããããšã確èªããããã®å®éã®ãã©ãŠã¶ãŒãèŠã€ããããšãã§ããŸããã BrowserStackã§Android4.1 â 4.4ããšãã¥ã¬ãŒãããæšæºã®Androidãã©ãŠã¶ãŒã䜿çšããŠã¿ãŸãããããšã©ãŒãæ£åžžã«å ±åãããŸãã
ããã¯çŽ æŽãããæ©èœã§ãïŒ å€ããã©ãŠã¶ã§ãåãåé¡ãçºçããŸãã
ããã¯ç§ã倢äžã«ãããŠããã®ã§ããã®https://github.com/rollokb/raven-js/tree/feat/old-webkit-Event-handlingã®ããããäœæããŸãã
ãã«ãªã¯ãšã¹ããéä¿¡ããåã«ãæ¬çªç°å¢ã§å°ããã¹ãããŸãã
@rollokb âãã®ã³ãããã¯çŽ æŽãããèŠããŸãã ãããæ¬çªç°å¢ã§ã©ã®ããã«æ©èœããããæããŠãã ããã åŸã§ããããã¹ã¿ãŒã«ããŒãžããŠããããã§ãã
çŽ æŽãããïŒ ããã¯ç§ã«ãããããé§ãç«ãŠãŠããŸãïŒ +1
æ¬çªç°å¢ã§ã¯æ£åžžã«æ©èœããŠããããã§ãã
ç·šéïŒ
æ£åžžã«åäœããŠããããã§ãããèªåã§ããªã¬ãŒããã€ãã³ãã§ã®ã¿æ©èœããŸãã ããã§ããã€ãã³ãã®å 容ã«é¢ããæ å ±ã¯ãŸã£ããåŸãããŸããã
æ£åžžã«åäœããŠããããã§ãããèªåã§ããªã¬ãŒããã€ãã³ãã§ã®ã¿æ©èœããŸãã ããã§ããã€ãã³ãã®å 容ã«é¢ããæ å ±ã¯ãŸã£ããåŸãããŸããã
ããã§åé¡ãçºçããå¯èœæ§ããããŸãã
+ for (var property in event) {
+ if (event.hasOwnProperty(property)) {
+ options.extra[property] = event[property];
+ }
+ }
hasOwnProperty
ããã§ãã¯ãããšã Event.prototype
ãã掟çããããããã£ãååŸã§ããªããªããŸãã ãããã®åœ±é¿ãåãããã©ãŠã¶ããã¹ãã§è¡ã£ãŠããããã«ãäœæããEvent
ãªããžã§ã¯ãã«ããããã£ãçŽæ¥é
眮ããªãéããããŒã¿ã¯è¡šç€ºãããŸããã
å察ã«ããã®ãã§ãã¯ãåé€ãããšããšã©ãŒãšã¯é¢ä¿ã®ãªãäžé£ã®ããããã£ãååŸãããŸãã ããããããããã®ããã«èŠããããšã¯äžèŠã®äŸ¡å€ããããããããŸããã
ããªãã¯ããããæ£ããã§ãã PhantomJSã§ãã¹ããããšãã«ãããã«æ°ã¥ããŸããã
ãã©ã³ããæŽæ°ããŸãã
https://github.com/rollokb/raven-js/blob/feat/old-webkit-Event-handling/src/raven.js#L1109 -L1121
涌ããã ç¹°ãè¿ãã«ãªããŸããããããæãäžããŠããã ãããããšãããããŸãã
å°ã話é¡ã«ãªããŸãããPhantomJSã¯ãã®ãããžã§ã¯ãã«ã©ã®ããã«ããŒããããŠããŸããïŒ ã€ãã³ãããããã£ã誀ã£ãŠåŠçããŠããããã§ãïŒã€ãŸãããã¹ãŠã®ã€ãã³ããããããç¬èªã®ãã®ãšããŠèªèããŸãïŒã
kmiyashiro / grunt-mochaçµç±
https://github.com/getsentry/raven-js/blob/master/Gruntfile.js#L193
ã€ãã³ãããããã£ã誀ã£ãŠåŠçããŠããããã§ãïŒã€ãŸãããã¹ãŠã®ã€ãã³ããããããç¬èªã®ãã®ãšããŠèªèããŸãïŒã
Chrome /ä»ã®ãã©ãŠã¶ã§èŠ³å¯ãããã®ãšåãããã«åäœããEventãªããžã§ã¯ããã¢ãã¯ããŠã¿ãããšãã§ããŸãã ïŒããŸãããã°ããããã®ãªããžã§ã¯ããéä¿¡ããã¬ã¬ã·ãŒãã©ãŠã¶ãåãããã«æããŸããïŒ
ãŸããPhantom2ãå®è¡ãããã¹ããååŸããŠãåäœãããæ£ç¢ºã§ãããã©ããã確èªããããšãã§ããŸãã ç§ã¯åœŒããä»1.9.8ãå®è¡ããŠãããšä¿¡ããŠããŸãã
@rollokb âããã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ
ä»æ¥ãAndroid4ã®FacebookBrowser v80ããäœçŸãã®ãã®ãå ¥æããŸãããããã¯ããã»ã©å€ããã®ã§ã¯ãããŸãããïŒ
Androidãã©ãŠã¶ãæèŒããAndroid4.xã§ãããã®ãšã©ãŒã®å€ããçºçããŠããŸã
ä»æ¥ãAndroid4ã®FacebookBrowser v80ããäœçŸãã®ãã®ãå ¥æããŸãããããã¯ããã»ã©å€ããã®ã§ã¯ãããŸãããïŒ
ãFacebookãã©ãŠã¶ãã¯ãå éšã®Webãã©ãŠã¶ãäœã§ããFacebookãã©ããããŠããã ãã ãšç¢ºä¿¡ããŠããŸãã
åºæ¬çã«ããã®ãšã©ãŒã¯ãAndroidãã©ã³ã®åœéããŒãžã§ã³ã®æã§ã®ã¿çºçããŸãã ãã®ãããªãšã©ãŒã衚瀺ãããããããã€ã¹ãªã¹ããèŠãŠãã ãããSamsungGT-S8600ã®ãããªããã€ã¹ã³ãŒãããããŸãããããã¯åç±³/欧米ã®ã¢ãã«ã§ã¯ãããŸããã
ãChromeMobileããŸãã¯ãAndroidBrowserãïŒãŠãŒã¶ãŒãšãŒãžã§ã³ãã¯ç°¡åã«åœé ãããŸãïŒãè£ ã£ããã©ãŠã¶ã®ãã©ãŒã¯ã䜿çšããŠããããã«èŠããŸãããErrorãªããžã§ã¯ãã®çœ²åãç°ãªã£ãŠããããã§ãã ãšã©ãŒãåçŸããã®ã«èŠåŽããŸãããïŒãªãã£ã¹ã§äœ¿çšããããã«ãããã®é»è©±ã®ããã€ããè³Œå ¥ããããšããããšãå«ãïŒãè¿ããã¡ã«ããäžåºŠè©ŠããŠã¿ãã€ããã§ãã
ãŸããªãã©ãŠã¶ã§ã¯ãããã®ãšã©ãŒã¯çºçããŸãããChrome51.0.2704ãæèŒããWindows10ã§çºçããã ãã§ãã
ããã«ã¡ã¯ãã¿ããªïŒ
ãŸããç§ã¯ã¬ã€ãŽã³ã®ã¬ããŒããæã£ãŠããŸã
...
"exception": {
"values": [
{
"value": "[object Event]",
"stacktrace": {
"frames": [
...
]
}
}
]
}
Androidã®ã¢ãã€ã«ãã©ãŠã¶ã§ã ãŠãŒã¶ãŒãšãŒãžã§ã³ãã¯Mozilla/5.0 (Linux; U; Android 4.4.2; de-de; GT-N7100 Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
ãã®ããã®+1
ãã®ããã3.7.0以éã [object Event]
ããã³ãã®ä»ã®ãã£ãããããéãšã©ãŒãªããžã§ã¯ãã®åæãã¬ãŒã¹ãçæããããã«ãªããŸããã 3.7.0ãè©ŠããŠãã©ã®ãããªçµæãåŸããããã確èªããããšããå§ãããŸãã
@benvinegar 3.7.0ãã€ã³ã¹ããŒã«ããŸãããããã®ãšã©ãŒãçºçããŸã
ç§ã¯äžæçãªè§£æ±ºçãšããŠæ¬¡ã®ããã¯ã䜿çšããŠããŸãïŒ
Raven.install();
if (Raven._processException) {
const oldProcessException = Raven._processException;
Raven._processException = function (event, message) {
if (message && typeof message === 'object') {
// detect that it's an event
if (String(message) === '[object Event]') {
// message
message = stringifyEvent(message);
// type
event = event || 'event';
} else {
// stringify the other objects
try {
message = JSON.stringify(message);
} catch (e) {
//
}
}
arguments[0] = event;
arguments[1] = message;
}
return oldProcessException.apply(this, arguments);
};
}
function stringifyEvent (event) {
const data = {
eventPhase: event.eventPhase,
type: event.type,
isTrusted: event.isTrusted,
returnValue: event.returnValue,
timeStamp: event.timeStamp
};
if (event.target) {
data.target = {
src: event.target.src,
tagName: event.target.tagName || 'UNKNOWN_HTMLELEMENT',
className: event.target.className,
readyState: event.target.readyState
};
}
if (event.path) {
data.path = event.path.map((el) => {
const tagName = el.tagName || 'UNKNOWN_HTMLELEMENT';
const className = (el.className || '').replace(/\s+/, '');
// DIV.class-1.class-2
return `${ tagName }.${ className }`;
});
}
return JSON.stringify(data);
}
@webschikãã®è¡ã®ã¿ã€ããã¹ã®ããã«èŠããŸãïŒ
return `${ tagName }.${ className }`;
ãããŠãããªãã¯ãã®å»ºèšãèš±å¯ãããŠããããšã確信ããŠããŸãïŒ
data.path = event.path.map((el) => {
UPïŒãã®ä¿®æ£ã§ãäºæããªãããŒã¯ã³=>ããšã©ãŒãçºçãã
@webschik
@AlexanderMatveev ãããã¯ES2015æ§æã§ãã
ããªãã¯ããã亀æããããšãã§ããŸã
@webschikãã®ããã¯ãè¿œå ããŸããããäœãå€æŽãããŠããªãããã«èŠããŸãããããã§ãã[objectEvent]ããšã©ãŒãçºçããŸãã
@AlexanderMatveev ãããã¯ç§ã®ãããžã§ã¯ãã§æ©èœããã®ã§ãå¥åŠã§ãã ãããããããã§ããã«èª¿æ»ãå¿ èŠã§ã
@webschik
ã¹ã¯ãªããã®é åºã¯æ¬¡ã®ãšããã§ãã
<script type="text/javascript" src="[raven.min.js version 3.7.0]"></script>
<script>
Raven.config('https://[...]@sentry.io/[...]', {
release: '[...]'
}).install();
</script>
<script type="text/javascript" src="[fix.js without first Raven.install() line]"></script>
@benvinegar 3.7.0ãã€ã³ã¹ããŒã«ããŸãããããã®ãšã©ãŒãçºçããŸã
ããªãã¯ãŸã ãããåŸãã§ãããã éãã¯ãåæã¹ã¿ãã¯ãã¬ãŒã¹ãçæããå¿ èŠãããããšã§ãã ãã ããwindow.onerrorãŸã§ããã«ããããã«ãã£ãããããå Žåãã¹ã¿ãã¯ãã¬ãŒã¹ã¯åœ¹ã«ç«ããªãå¯èœæ§ããããŸãïŒãã ããããããã£ãããããŠããæ¹æ³ã§ããããšãããããŸãïŒã
UAã®ãã¹ããããSentryã®Raven 3.6.1
ã§ãåãã§ããïŒ Mozilla/5.0 (Linux; U; Android 3.1; en-gb; GT-P7500 Build/HMJ37) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13
ãŸããããã€ãã®ã€ãã³ãããããŸããããããã®ã»ãšãã©ã¯AndroidãŸãã¯Facebookãã©ãŠã¶ãŒããã®ãã®ã§ãã æè¿ã®ã¯ãã®Facebook95.0ã§ããããã®ãšã©ãŒãåŒãèµ·ãããŠããŸãã Android4 .ã ã¯ã¡ã€ã³OSã§ãããå ±åãããŠããããã€ã¹ã®å€ãã¯Samsung-GT [äœã]ã§ãã 3.7.0ããŒãžã§ã³ã䜿çšããŠããŸãã
ããããç¹å¥ãªããã€ã¹ã§ã¯ãªããéåžžã«äžè¬çãªãŠãŒã¶ãŒãšãŒãžã§ã³ãããååŸããŸããã
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36
ã¬ã€ãŽã³3.9.0
ãã§ã€ã¹ããã¯ãšã¢ã³ããã€ãã®browser.nameã§ã1æ¥ã«æ°çŸå3.9.1ã§ãŸã çºçããŸã
ã¹ã¿ãã¯ãã¬ãŒã¹ã¯äžåãããŸããã
ç¡èŠããã°ããã§ããïŒ
ãã£ã¡ãäžç·ã
ããã«ããã¿ããªãšåãã§ãã ãã®æ å ±ã圹ç«ã€å ŽåïŒ
UAïŒ Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-I8190L Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/87.0.0.17.79;]
ãã©ãŠã¶ïŒ Facebook 87.0.0
ããã§ãåãã§ããäœã解決çã¯ãããŸããïŒ ïŒS
ç§ã¯åãåé¡ãæ±ããŠããŸã
ç§ã¯çŸåšåãåé¡ãæ±ããŠããŸã...ãã®ãšã©ãŒããããããããããã«æ©åšã®ãããå€ã«éããŸãð
ãããã®åé¡ã¯ããã¹ãŠWindows10ã®Chrome45ã§çºçããŠããŸãã
ããã¯ãŸã ã¬ã€ãŽã³3.15.0ããã§ã€ã¹ããã¯ïŒã¢ã³ããã€ããã©ãŠã¶ã§èµ·ãã£ãŠããŸã
ç¡èŠããã ãã§ããã§ããïŒ
誰ãã解決çãèŠã€ããŸãããïŒ ç§ã®å Žåãããã¯æ©åšã«è¡šç€ºãããŸãïŒ
`[ãªããžã§ã¯ãã€ãã³ã]
TrimHeadFramesïŒ./ node_modules / raven-js / src / raven.jsïŒ562ïŒ1ïŒã§
_logDebugïŒ./ node_modules / raven-js / src / raven.jsïŒ488ïŒ1ïŒ
G._promiseRejectionHandlerïŒ./ node_modules / raven-js / src / raven.jsïŒ430ïŒ1ïŒ `
unhandledPromiseRejectionïŒtrue
ãŠãŒã¶ãŒãšãŒãžã§ã³ãïŒMozilla / 5.0ïŒLinux; U; Android 6.0.1; en-US; vivo 1610 Build / MMB29MïŒAppleWebKit / 537.36ïŒKHTMLãGeckoãªã©ïŒããŒãžã§ã³/4.0Chrome/57.0.2987.108 UCBrowser / 12.5.8.1112 Mobile Safari /537.36
ããã€ã¹ãã¡ããªãŒïŒvivo 1610
ããã€ã¹ã¢ãã«ïŒ1610
ããã€ã¹ãã©ã³ãïŒvivo
Android 6.0.1
UCãã©ãŠã¶12.5.8
ç§ã®raven-jsã¯ã©ã€ã¢ã³ãã®ããŒãžã§ã³ã¯æ¬¡ã®ãšããã§ãïŒ3.25.0
ãšã©ãŒã®ã¹ã¯ãªãŒã³ã·ã§ãããæ·»ä»ããŸããïŒå€ãã®å€ããã©ãŠã¶ã§äœåºŠãçºçããŸãïŒ
ããã¯ãã€ãã³ããã³ããšã«ã¹ã¿ã ãšã©ãŒåŠçã䜿çšããŠæ°ããSDKã§ä¿®æ£ã§ããŸãã
@kamilogorek
ããã¯ãã€ãã³ããã³ããšã«ã¹ã¿ã ãšã©ãŒåŠçã䜿çšããŠæ°ããSDKã§ä¿®æ£ã§ããŸãã
ããã詳ãã説æããŠããã ããŸããïŒ ããã¥ã¡ã³ããžã®ãªã³ã¯ã¯ãããŸããïŒ
å°ãªããšãã©ã®ããŒãžã§ã³ãå¿
èŠã§ããïŒ
ãã®åé¡ã«ã€ããŠã¯ããããã®ãã€ãã³ããã³ãããšãã«ã¹ã¿ã ãšã©ãŒåŠçãèšå®ã®ã³ãŒãã¹ããããã䜿çšããããšããå§ãããŸãã
ããããšãïŒ
@hiroshiã¯https://github.com/getsentry/sentry-javascript/issues/1401#issuecomment-418631326ãåç
§ããŠãã ãã
ããã¯ãRCTodayãšããŠãªãªãŒã¹ãããæ°ããsentry-javascriptSDKã®æ©èœã§ãã raven-js / nodeã«ç§»æ€ãããããšã¯ãããŸããã
ããã«ã¡ã¯ãç§ã¯ã»ã³ããªãŒã§ãã®ãããªãšã©ãŒãèŠç¶ããŸãïŒ
exception | Error: [object Event]
ã¹ã¿ãã¯ãã¬ãŒã¹ã¯æ·»ä»ãããŠãããã圹ç«ã€æ
å ±ããããŸããã LogRocketã»ãã·ã§ã³ããããŠãŒã¶ãŒã¯åé¡ãçµéšããŠããªãããã§ãã FacebookãšGoogleTag Managerãžã®ãããã¯ããããªã¯ãšã¹ããããã€ãããã®ã§ããããã«ãŒæ¡åŒµæ©èœãã€ã³ã¹ããŒã«ãããŠãããšæãããŸãã
ããã¯ãChrome 75ã䜿çšããŠãã人ããã®ç¹°ãè¿ãã®ãšã©ãŒã§ãããéåžžã«å€ããã©ãŠã¶ã§ã¯ãããŸããã
ãã®åé¡ã解決ããæ¹æ³ã«ã€ããŠäœãææ¡ã¯ãããŸããïŒ
ããããšã
泚ïŒ@ sentry / browserããŒãžã§ã³5.3.0
@burtyishãææ°ããŒãžã§ã³ã«æŽæ°ããããšã¯ãæåã®è¯ãã¹ãããã§ãã 5.7.0ã§ã¯ããã®åäœã«é¢ããå€ãã®å€æŽãå°å ¥ãããŸããã
@kamilogorekããããšãïŒ
sendry.javascript.browser v5.12.1ã«ã¢ããã°ã¬ãŒãããã®ã§ãã¯ããã«æçãªãšã©ãŒã衚瀺ãããŸãã
ãããŠãç§ãã¹ã¿ãã¯ãã¬ãŒã¹ãæã£ãŠããŸãïŒ
@burtyishãããïŒ :)
æãåèã«ãªãã³ã¡ã³ã
@rollokb âããã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ