Sentry-javascript: рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЧреБрдг рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ [рдСрдмреНрдЬреЗрдХреНрдЯ ErrorEvent]

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЕрдЧре░ 2017  ┬╖  31рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: getsentry/sentry-javascript

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдмрдЧред

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдХрднреА-рдХрднреА (рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ) message рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ [object ErrorEvent] рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдгреАрдп рдореЗрдВ рд░реЗрд╡реЗрди рдХреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛: https://docs.sentry.io/clients/javascript/integrations/angular/ред

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

рд░реЗрд╡рди 3.17.0
рдХреЛрдгреАрдп 4.3.1
рд╡реЗрдмрдкреИрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ
рд╕реАрдбреАрдПрди рд╕рдВрд╕реНрдХрд░рдг

objecterrorevent

Help Wanted Needs Reproduction Bug

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рдореБрджреНрджрд╛ рдорд┐рд▓ рдЧрдпрд╛ред ErrorEvent рдХреЛ isError рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛

function isError(value) {
  switch ({}.toString.call(value)) {
    case '[object Error]':
      return true;
    case '[object Exception]':
      return true;
    case '[object DOMException]':
      return true;
    default:
      return value instanceof Error;
  }
}

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди ErrorEvent рд▓рд┐рдП рд╕рд╣реА рд╣реЛрдЧрд╛ рдпрд╛ рдирд╣реАрдВ, рдФрд░:

image

isError рдХрд╛ рдЙрдкрдпреЛрдЧ captureException рд╡рд┐рдзрд┐ рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдкрд╡рд╛рдж рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ рдпрд╛ рдмрд╕ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИред captureException рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ captureMessage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рднреЗрдЬреЗрдЧрд╛, рдЕрдЧрд░ рдЙрд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдкрд╡рд╛рдж _actually_ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░реЗрд╡реЗрди рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдпрд╛ "рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдЕрдкрд╡рд╛рдж рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдмрдВрдж рднреЗрдЬрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо isError рдХреЛ ErrorEvent рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╕рднреА 31 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ рдПрдВрдЧреБрд▓рд░ рдбреЙрдХреНрд╕ рдореЗрдВ рдХрд╣реАрдВ ErrorEvent рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ? рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ рд╕рд╣реА рдорд╛рдпрдиреЛрдВ рдореЗрдВ " Error " рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред

рдпрд╣ рдореБрджреНрджрд╛ рдЯреНрд░реЗрд╕рдХрд┐рдЯ рдХреЗ traceKitWindowOnError() рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ message рддрд░реНрдХ ErrorEvent ( MDN рдбреЙрдХреНрд╕ рджреЗрдЦреЗрдВ)

@benvinegar ErrorEvent рдкрд░ рдХреБрдЫ рдбреЙрдХреНрд╕ рдпрд╣рд╛рдБ рд╣реИрдВ: https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent

рдЗрд╕рд╕реЗ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ:
https://forum.sentry.io/t/reporting-object-errorevent/1807

[email protected] (рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рдордп рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рднреА рд╣реЛ рд░рд╣рд╛ рд╣реИ)
рдХреЛрдгреАрдп 4.x
рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

Ionic 3 рдФрд░ [email protected] рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рднреА

<script>
  undefined.foo();
</script>

^ рдпрд╣ рдЖрдкрдХреЗ html рдореЗрдВ [object ErrorEvent] рд░реВрдк рдореЗрдВ рд╕рдВрддрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдлрд╛рд░реА рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд╣реА рд╕рдВрджреЗрд╢ TypeError: undefined is not an object (evaluating 'undefined.foo') ред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЖрдЗрдлреНрд░реЗрдо рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдлрд╛рд░реА рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз thatsред рдЬреИрд╕рд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рд╕рдВрддрд░реА рд╕рд┐рд░реНрдл [object ErrorEvent]

рдорд╛рддреНрд░ [object Event] рд░реВрдк рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рд╕рдВрддрд░реА рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдлреНрд▓реЛрдкреНрд▓реЗрдпрд░ рдХреА рд╣реИред рдлреНрд▓реЛрдкреНрд▓реЗрдпрд░ рдХрд░рддрд╛ рд╣реИ

jQueryElement.trigger('error', [api, {code: 5}]);

рдЖрдк рдЗрд╕реЗ jQuery рдПрдореНрдмреЗрдб рдХрд░рдХреЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рдХрд░реЗрдВ:

$('div:first').trigger('error')

рд╕рдВрддрд░реА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрддрд╛ рд╣реИ
image

рдпрдХреАрди рд╣реИ рдХрд┐ рдмрд╣реБрдд рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди error on element from jQuery - context <div class="foo><div class="bar" ... рддрд░рд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рддреЛ [object Event]

рдЗрд╕рд╕реЗ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдПред

@daangeerdink @jdelaune @rosslavery @tgensol рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕рд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╕рдВрднрд╡ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХреЗ?

@sod рдореИрдВрдиреЗ рдЕрднреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ, рдФрд░ рд╕рдлрд╛рд░реА 10.1.2 рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд╕рд╣реА рд╕рдВрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдкрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред

screen shot 2017-09-18 at 14 42 47

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдПрдХ рд░рд┐рдкреНрд░реЛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЗрддрдиреА рдЕрдкрд╛рд░рджрд░реНрд╢реА рд╣реИрдВ рдХрд┐ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рдХрд┐ рдореЗрд░реЗ рдХреЛрдбрдмреЗрд╕ рдХрд╛ рдХреМрди рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдЯреИрдХ рдирд┐рд╢рд╛рди рдирд╣реАрдВ рд╣реИ, рди рд╣реА рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ, рдпрд╛ рдПрдХ 3 рдкрд╛рд░реНрдЯреА рдХрд╛ рдХрд╛рдо рд╣реИ, рдЖрджрд┐ред

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рд╡реЗ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВ рдЕрдзрд┐рдХ рд╕рд╣рд╛рдпрддрд╛ рдХрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред

рд╣рдореЗрдВ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдкрд┐рдЫрд▓реЗ 10 рджрд┐рдиреЛрдВ (рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА 22k рдШрдЯрдирд╛рдУрдВ, 13k рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ) рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
image

image

image

@kamilogorek рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА 2 рд▓рд╛рдЦ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд░ рдкрд╛ рд░рд╣реЗ рдереЗред

рдореБрдЭреЗ рдореБрджреНрджрд╛ рдорд┐рд▓ рдЧрдпрд╛ред ErrorEvent рдХреЛ isError рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛

function isError(value) {
  switch ({}.toString.call(value)) {
    case '[object Error]':
      return true;
    case '[object Exception]':
      return true;
    case '[object DOMException]':
      return true;
    default:
      return value instanceof Error;
  }
}

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди ErrorEvent рд▓рд┐рдП рд╕рд╣реА рд╣реЛрдЧрд╛ рдпрд╛ рдирд╣реАрдВ, рдФрд░:

image

isError рдХрд╛ рдЙрдкрдпреЛрдЧ captureException рд╡рд┐рдзрд┐ рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдкрд╡рд╛рдж рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ рдпрд╛ рдмрд╕ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИред captureException рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ captureMessage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рднреЗрдЬреЗрдЧрд╛, рдЕрдЧрд░ рдЙрд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдкрд╡рд╛рдж _actually_ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░реЗрд╡реЗрди рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдпрд╛ "рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдЕрдкрд╡рд╛рдж рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдмрдВрдж рднреЗрдЬрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо isError рдХреЛ ErrorEvent рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдбреЗрдЯ рди рдХрд░реЗрдВред рддреНрд░реБрдЯрд┐рд░рд╣рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ?

рд╣рд╛рдБред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Error рдХрд╛ рд╡рдВрд╢рдЬ рдирд╣реАрдВ рд╣реИ (рдпрд╣ Event рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИ)ред рдЗрд╕рдХреЗ рдкрд╛рд╕ stack рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (AFAICT, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЦреЗрд▓ рд░рд╣рд╛ рд╣реИ)ред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рддрд╛рдХрд┐ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХреЗрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рддрд╛ ErrorEvent рдПрдХ рд▓реЗрддрд╛ рд╣реИ Error , рддрд╛рдХрд┐ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЗрддрдирд╛ рдкрд╕рдВрдж рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛:

if (isErrorEvent(ex)) {
    ex = ex.error;
}

рдЖрдк рдпрд╣рд╛рдВ рдирд┐рд░реНрдорд╛рдг рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, ErrorEventInit рд╣реИрд╢ рджреЗрдЦреЗрдВред рдпрд╣ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдирд╣реАрдВ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ ErrorEvent.error рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

рдмреЗрд╢рдХ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ - рдореИрдВ рд╕рд┐рд░реНрдл рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдмрдврд╝рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИ isError рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП true ред

рдореБрдЭреЗ рд╕рдордЭред рдореИрдВ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдПрдХ рдкреАрдЖрд░ рд░рдЦреВрдБрдЧрд╛ред

3.19.x

рдереИрдВрдХреНрд╕ @shcallaway! ЁЯСН

рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдЕрднреА рднреА 3.19.1 on рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ
image
image

@PhilippSpo рдпрд╣ рдШрдЯрдирд╛ рдХрд┐рд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдЖ рд░рд╣реА рд╣реИ? рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рдореЛрдмрд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдФрд░ IE рдореЗрдВ ErrorEvent рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рдпрдорд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖрдирд╛ рдкрдбрд╝рд╛ред

@kamilogorek Chrome 61.0.3163

рдореИрдВ рдЗрд╕реЗ рдХреНрд░реЛрдо 61 рдкрд░ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред Look рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рд╕рд╛рднрд╛рд░ @shcallaway

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рдлрд╛рд░реА 11.0, рдореИрдХ рдУрдПрд╕ 10.13 рдкрд░ рд╣реЛрддрд╛ рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреНрд░реЗрд╕рдХрд┐рдЯрд╡реЙрдиреНрдбрдСрдирдСрд░рд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм 'рд╕рдВрджреЗрд╢' рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдПрд░рд░рд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ:
screen shot 2017-11-06 at 11 36 34
рдФрд░ 'рдкреВрд░реНрд╡' рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред рдлрд┐рд░, рдпрд╣ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде InformHandlers рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ 'рд╕рдВрджреЗрд╢' рдлрд╝реАрд▓реНрдб рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ:
screen shot 2017-11-06 at 11 41 14
рдЬреЛ, рдЬрдм _makeRequest рдореЗрдВ рддрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ , рддреЛ рдЕрд░реНрдерд╣реАрди рд╕рдВрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдЬрд╛рдВрдЪ @ michal-rumanek рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ (рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдЦрд╛рд▓реА рд╕рдордп рдирд╣реАрдВ рд╣реИ)ред

@kamilogorek , рдХреЛрдИ рдкреНрд░рдЧрддрд┐? ;-)

рдирдорд╕реНрддреЗ, рдореИрдВ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ [object Object] рдмрд╣реБрдд рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
screenshot 2017-12-01 09 41 20

рдХреЛрдгреАрдп рек
рдХреНрд░реЛрдо 62.0.3202
рд░реЗрд╡рди- js 3.20.1

Https://github.com/getsentry/raven-js/pull/1162 рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

adepue picture adepue  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattkrick picture mattkrick  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dimmduh picture dimmduh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jaylinski picture jaylinski  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

THPubs picture THPubs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ