Sentry-javascript: рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж (`рдХреИрдкреНрдЪрд░ рдПрдХреНрд╕реЗрдкреНрд╢рди`) рдХреИрд╕реЗ рд▓реЙрдЧ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рд╕рд┐рддре░ 2018  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: getsentry/sentry-javascript

рдЬрдм рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдореИрдВ рд╕рдВрддрд░реА рдХреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреЗрдЬрдирд╛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░ рд╕рдХреВрдВред

рд╕реЗрдВрдЯреНрд░реА рдХреЛ рдЕрдкрд╡рд╛рдж/рдШрдЯрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЙрдиреНрд╣реЗрдВ рдХрдВрд╕реЛрд▓ рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ?

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

@gaastonsr рдЖрдк рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ :) https://docs.sentry.io/learn/filtering/?platform=browser#before -send

Sentry.init({
  dsn: "DSN",
  beforeSend: (event, hint) => {
   if (IS_DEBUG) {
     console.error(hint.originalException || hint.syntheticException);
     return null; // this drops the event and nothing will be sent to sentry
   }
   return event;
  }
});

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

рд╣рдордиреЗ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ captureException рд▓рдкреЗрдЯрд╛:

function captureException(...args) {
    if (typeof Sentry !== 'undefined') {
        Sentry.captureException(...args);
    }
    else {
        console.error(...args);
    }
}

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдЧрд╛ beforeSend
```рдЬреЗрдПрд╕
рд╕рдВрддрд░реА.рдЗрдирд┐рдЯ({
рдбреАрдПрд╕рдПрди: "рдбреАрдПрд╕рдПрди",
рдкрд╣рд▓реЗ рднреЗрдЬреЗрдВ: рдШрдЯрдирд╛ => {
рдЕрдЧрд░ (IS_DEBUG) {
рдХрдВрд╕реЛрд▓.рддреНрд░реБрдЯрд┐ (рдШрдЯрдирд╛);
рд╡рд╛рдкрд╕реА рд╢реВрдиреНрдп; // рдпрд╣ рдШрдЯрдирд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рдВрддрд░реА рдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛
}
рд╡рд╛рдкрд╕реА рдХреА рдШрдЯрдирд╛;
}
});

рдореБрдЭреЗ beforeSend рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдореВрд▓ рддреНрд░реБрдЯрд┐ рд╡рд╕реНрддреБ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@gaastonsr рдЖрдк рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ :) https://docs.sentry.io/learn/filtering/?platform=browser#before -send

Sentry.init({
  dsn: "DSN",
  beforeSend: (event, hint) => {
   if (IS_DEBUG) {
     console.error(hint.originalException || hint.syntheticException);
     return null; // this drops the event and nothing will be sent to sentry
   }
   return event;
  }
});

рдУрдордЧ, рдпрд╣ рд╕рдм рдХреБрдЫ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж, @kamilogorekред

рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ 30 рдорд┐рдирдЯ рдХрд╛ рд╕рдордп рд▓рдЧрд╛ рдХрд┐ рдореЗрд░рд╛ рдХрдВрд╕реЛрд▓ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд▓реЙрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВрдЧреЗред рдФрд░ рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреИрдкреНрдЪрд░ рдПрд░рд░ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдмрдирд╛рдПрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдХрд╛рди рдлреАрдбрдмреИрдХ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓реЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рднрд╛рдЧ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА :)

рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВрдЧреЗред рдФрд░ рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреИрдкреНрдЪрд░ рдПрд░рд░ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдмрдирд╛рдПрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдХрд╛рди рдлреАрдбрдмреИрдХ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓реЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рднрд╛рдЧ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА :)

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдХрд┐ рд╕рдВрддрд░реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ!
рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рднреА рдПрдХ рдШрдВрдЯрд╛ рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдореЗрд░рд╛ рдРрдк рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдВрд╕реЛрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдмреНрд░реЗрдбрдХреНрд░рдВрдм рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╛ рд╢рд╛рдпрдж рдЗрд╕реЗ setTimeout рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд░рддрд╛ рд╣реВрдВ:

Sentry.init({
  dsn: 'DSN',
  beforeSend: (event, hint) => {
    setTimeout(() => console.error(hint.originalException || hint.syntheticException), 0);
    return event;
  }
});

@vitalets рдЗрд╕реЗ 5.9.0 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред

@vitalets рдЗрд╕реЗ 5.9.0 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред

@ рдХрд╛рдорд┐рд▓реЛрдЧреЛрд░реЗрдХ
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП sentry/browser 5.9.1 (рдХреНрд░реЛрдо 78, рдУрдПрд╕рдПрдХреНрд╕) рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИрдВ:

Sentry.init({  dsn: 'dsn' });
setTimeout(() => {throw new Error('abc')}, 3000);

рдХрдВрд╕реЛрд▓ рдЦрд╛рд▓реА рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрддрд░реА рдХреЛ рднреЗрдЬреА рдЧрдИ рдереАред

рд╕рдВрддрд░реА рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд┐рдирд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

// Sentry.init({  dsn: 'dsn' });
setTimeout(() => {throw new Error('abc')}, 3000);

image

рдпрд╣ рдХреИрдкреНрдЪрд░ рдЕрдкрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ рдХреИрдкреНрдЪрд░ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ:
рдХреИрдкреНрдЪрд░рдЗрд╡реЗрдВрдЯ рдФрд░ @kamilogorek рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

Sentry.init({
  dsn: "DSN",
  beforeSend: (event, hint) => {
   if (IS_DEBUG) {
     console.error(hint.originalException || hint.syntheticException || event);
     return null; // this drops the event and nothing will be sent to sentry
   }
   return event;
  }
});

@kamilogorek рдХреНрдпрд╛ рдпрд╣ @sentry/node рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ? рдореЗрд░реЗ рдкрд╛рд╕ 5.9.0 рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ рдореБрдЭреЗ beforeSend рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреБрдЫ рднреА рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рднреА 5.10.1 рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рдкрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдпрджрд┐ рдбреАрдмрдЧ рд╕рддреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИ рддреЛ рд▓реЙрдЧрд┐рдВрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧреАред

рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЕрдВрдд рддрдХ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ...

https://html.spec.whatwg.org/multipage/webappapis.html#the -event-handler-processing-algorithm

рдпрджрд┐ рд╡рд┐рд╢реЗрд╖ рддреНрд░реБрдЯрд┐ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕рддреНрдп рд╣реИ
рдпрджрд┐ рд╡рд╛рдкрд╕реА рдорд╛рди рд╕рддреНрдп рд╣реИ, рддреЛ рдИрд╡реЗрдВрдЯ рдХрд╛ рд░рджреНрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░реЗрдВред
рдЕрдиреНрдпрдерд╛
рдпрджрд┐ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдЧрд▓рдд рд╣реИ, рддреЛ рдИрд╡реЗрдВрдЯ рдХрд╛ рд░рджреНрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░реЗрдВред

рдФрд░ рдлрд┐рд░ рдЖрдк рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ ...

рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рджреЛ рдЕрдкрд╡рд╛рдж рд╣реИрдВ:
рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдЖрддрдВрдХрд╡рд╛рджреА рд╣реИрдВрдбрд▓рд░, рдЬрд╣рд╛рдВ рд╕рдЪ рд▓реМрдЯрдирд╛ рдШрдЯрдирд╛ рдХреЛ рд░рджреНрдж рдХрд░ рджреЗрддрд╛ рд╣реИ

рдореИрдВ рддрджрдиреБрд╕рд╛рд░ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛

рдЬрдм рдЖрдк рдЪрд╢реНрдорд╛ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ рддреЛ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ

рдХреЛрдИ рднреА рдЕрдВрдд рддрдХ рдЪрд╢реНрдорд╛ рдирд╣реАрдВ рдкрдврд╝рддрд╛ :)

рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рд╕рдВрддрд░реА рдХреА рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬ рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдмрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рдВрддрд░реА рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдкреЗрдЬ рдореЗрдВ рд╕рдВрддрд░реА рдХреИрд╕реЗ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

<script src="https://browser.sentry-cdn.com/5.20.1/bundle.min.js" integrity="sha384-O8HdAJg1h8RARFowXd2J/r5fIWuinSBtjhwQoPesfVILeXzGpJxvyY/77OaPPXUo" crossorigin="anonymous"></script>
<script src="https://browser.sentry-cdn.com/5.20.1/vue.min.js" crossorigin="anonymous"></script>

рдпрд╣рд╛рдБ рдореЗрд░реА рдЖрд░рдВрднреАрдХрд░рдг рдХреЙрд▓ рд╣реИ:

  Sentry.init({
    dsn: 'https://_________.ingest.sentry.io/___________',
    integrations: [new Sentry.Integrations.Vue({Vue, attachProps: true})],
  });

рдореИрдВрдиреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрд╛рджрди рд▓рд╛рдЗрди рдЬреЛрдбрд╝рд╛ рд╣реИ:

 window.undef.undef += 1;

рдЬрдм рдореИрдВ рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рд░реЗрдЦрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрддрд░реА рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдЕрдЧрд░ рдореИрдВ Sentry.init рдХреЙрд▓ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЬреЗрдПрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ TypeError рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдЕрдкрдиреЗ рдкрдврд╝рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдореБрдЭреЗ рдЬреЗрдПрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдЬрдмрдХрд┐ рдЗрд╕реЗ рд╕рдВрддрд░реА рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рднреА рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ? рдХреНрдпрд╛ рдореБрдЭреЗ рдЕрднреА рднреА beforeSend рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рдЕрдм рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ logErrors: true рдХреЛ Integrations.Vue рдХреЙрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

new Sentry.Integrations.Vue({Vue, attachProps: true, logErrors: true}

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛!

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

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

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

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

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

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

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