Sentry-javascript: index.js . рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рдорд┐рд▓рд╛

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

рдкреИрдХреЗрдЬ + рд╕рдВрд╕реНрдХрд░рдг

  • [ ] @sentry/browser
  • [рдПрдХреНрд╕] @sentry/node
  • [ ] raven-js
  • [ ] raven-node _(рдиреЛрдб рдХреЗ рд▓рд┐рдП рд░реЗрд╡реЗрди)_
  • [ ] рдЕрдиреНрдп:

рд╕рдВрд╕реНрдХрд░рдг:

4.4.1

рд╡рд┐рд╡рд░рдг

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдИрд╡реЗрдВрдЯ рдХреИрдкреНрдЪрд░рд┐рдВрдЧ рдХреЛрдб рдИрд╡реЗрдВрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рд╕рдВрддрд░реА рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛: Source code was not found for /.../index.js

const Sentry = require('@sentry/node');

Sentry.init({ dsn: 'https://5d29[...][email protected]/13[...]6' });

(async () => {
  const sentryEvent = await Sentry.Parsers.parseError(new Error('Test'));
  Sentry.captureEvent(sentryEvent);
})();

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рдВрддрд░реА рдореЗрдВ рдШрдЯрдирд╛ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ:
Sentry Event Screenshot

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

рдареАрдХ рд╣реИ, рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ UX рдмрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдЪрд╛рд╣рд┐рдП (Node.js рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо) рдХреЗрд╡рд▓ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП Source code was not found рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рдХреБрдЫ Source maps were not found ред рдЗрд╕рд╕реЗ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛;)
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлреНрд░рдВрдЯрдПрдВрдб/рдбрд┐рд╕реНрдкреНрд▓реЗ рднрд╛рдЧ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдмрд╕ рдЗрд╕реЗ рдмрдВрдж рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдЧрд▓рддрдлрд╣рдореА рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВред рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

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

рдХреНрдпрд╛ рдЖрдк рдШрдЯрдирд╛ рдХрд╛ рд╕реАрдзрд╛ рд▓рд┐рдВрдХ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

(рдЖрдкрдиреЗ рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдХреБрдЫ рдкрдереЛрдВ рдХреЛ рднреА рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдорд╛рд╕реНрдХ рдХрд┐рдпрд╛ рдерд╛ )

рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдк рд╕реАрдзреЗ Sentry.captureException рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдИрд╡реЗрдВрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рд╣рд╛рдБ, рдпрд╣ рдШрдЯрдирд╛ рд╣реИ: https://sentry.io/share/issue/e2c8d20b66d2406cb32c540d87654b4a/ (рд╣рдорд╛рд░реЗ рдбреАрдПрд╕рдПрди рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд)

рдХрд╛рд░рдг, рдореИрдВ Sentry.captureEvent() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реВрдВ: рдореИрдВ рдПрдХ рд╣реИрдкреА рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдП рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╣реИрдкреА рд░реВрдЯ рд╣реИрдВрдбрд▓рд░ (рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рд╕реЗ рд╕рдореГрджреНрдз) рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХреА рдЧрдИ рддреНрд░реБрдЯрд┐ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред рджреЗрдЦреЗрдВ: рд╣реИрдкреА- рд╕реЗрдВрдЯреНрд░реА ./index.js#L41-L67

@guischdi рдЖрдкрдХреЛ рдпрд╣ рддреНрд░реБрдЯрд┐
рд╕рдВрддрд░реА /something/local/src/app.js рд▓рд╛рдиреЗ рдФрд░ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рдореИрдкрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рд╕реЗ рд╕реНрд░реЛрдд-рдХреЛрдб рдкрдврд╝рддрд╛ рд╣реИ (рдпрд╣ рд╕реНрд░реЛрддрдореИрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╣рдорд╛рд░реЗ рд╕реАрдПрд▓рдЖрдИ https://docs.sentry.io/cli/ рдпрд╛ рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/getsentry/sentry-webpack-plugin

рдпрд╣рд╛рдВ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдкрд░ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рдПрд╕рдбреАрдХреЗ https://docs.sentry.io/clients/node/sourcemaps/ рдХреЗ рд▓рд┐рдП рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рдорд╛рди рд╣реИ (рдпрд╣ рд╕рдм рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рдореБрджреНрджреЗ рдкрд░ рдЙрд╕реА рддрд░рд╣ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ)ред

рдПрдХ рдореМрдЬреВрджрд╛ рдПрдХреАрдХрд░рдг рднреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдкрдереЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/getsentry/sentry-javascript/blob/master/packages/core/src/integrations/pluggable/rewriteframes.ts

рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

Sentry.init({
  dsn: "https://[email protected]/297378",
  integrations: [new Sentry.Integrations.RewriteFrames()]
});

/something/local/src/app.js рдХреЛ app:///app.js ( app:/// рд╣рдорд╛рд░рд╛ рдЖрдВрддрд░рд┐рдХ рдЙрдкрд╕рд░реНрдЧ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рдЕрдкрдиреА рд╕рдВрддрд░реА рд░рд┐рд▓реАрдЬ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдореЗрдВ app.js рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдмрд┐рдирд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдмрд╛рд╣рд░реА рдлрд╛рдЗрд▓реЗрдВ рд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рдЬреЛ рдХрд░рдирд╛ рд╣реИ рд╡рд╣ рд╣реИ:

  • release рдХреЛ init рдХреЙрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ
  • рд╕рдВрддрд░реА рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЙрд╕реА рд░рд┐рд▓реАрдЬ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ
  • рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝реА рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рдлрд╝реНрд░реЗрдо рдЖрдкрдХреА рдЕрдкрд▓реЛрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдФрд░ рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВред

рдирдорд╕реНрддреЗ @kamilogorek
рдЖрдкрдХреЗ рд╡рд┐рд╕реНрддреГрдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рдкрд╛рдпрд╛: рд╕рдВрддрд░реА рдореЗрдВ рдПрдХ Node.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░рд┐рд╡рд╛рдЗрдЯрдлреНрд░реЗрдо рдПрдХреАрдХрд░рдг рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХреИрд╕реЗ рдЖрддрд╛ рд╣реИ рдХрд┐ captureException /catch-all рдкрд░ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ 'рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рдорд┐рд▓рд╛' рддреНрд░реБрдЯрд┐ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддреА рд╣реИред

рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ node_modules lib рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрдирд╛ред рд▓рд┐рдм рд╕реЗ рднреА рд╕реНрд░реЛрдд рдХреЛрдб рд╕рд╣рд┐рдд рддреНрд░реБрдЯрд┐ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИред рджреЗрдЦреЗрдВ https://sentry.io/share/issue/2b95ecb13ce24227b2184b2561e4f6e3/

рддреЛ рдпрд╣ captureException рд╕рд╛рде рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ captureEvent рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ?

Sentry Screenshot

@guischdi рдХреНрдпрд╛ рдЖрдк рджреЛрдиреЛрдВ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд▓рд┐рдВрдХ

рд╕рд╛рде рд╣реА, рдореИрдВ рдЕрдЧрд▓реЗ 3 рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рд▓рдп рд╕реЗ рдмрд╛рд╣рд░ рд░рд╣реВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ рддреЛ рдореИрдВ рдЗрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

@ рдХрд╛рдорд┐рд▓реЛрдЧреЛрд░реЗрдХ

  • рдпрд╣ captureEvent рд▓рд┐рдВрдХ рд╣реИ
  • рдпрд╣ captureException рд▓рд┐рдВрдХ рд╣реИ

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

@kamilogorek рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рднреА рдкреВрд░реЗ node_modules рдлрд╝реЛрд▓реНрдбрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рддреЗ рд╕рдордп @sentry/node рдХреНрдпреЛрдВ рдФрд░ рдпрд╣ рд╕рднреА рд╕реНрд░реЛрдд рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдмрд╕ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝реНрд░реЗрдо рдПрдХреАрдХрд░рдг рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдкреВрд░реНрдг node_modules рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрддрдиреА рд╕рд╛рд░реА рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмреЗрд╣рдж рдзреАрдореА рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╛ рддреЛ рд╣реИ:

  1. рд╕рдВрддрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкреВрд░реНрдг рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ .tar рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
  2. рдиреЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд┐рдВрдЧрд▓ .js рдФрд░ .map рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЗрди рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рддреИрдирд╛рдд рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЙрди рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА рдЬреЛ рдореВрд▓ .ts рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рдереЗ рдЬреЛ node_modules npm рдкреИрдХреЗрдЬ рдореЗрдВ рдирд╣реАрдВ рдереА - https://github.com/prisma/graphql-middleware/issues/159

@kamilogorek рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЦрдмрд░?

рдореИрдВ рдпрд╣ рднреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдкреБрдирд░реНрд▓реЗрдЦрди рдлреНрд░реЗрдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдерд╛ред

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

рд╣рдордиреЗ рдЕрднреА-рдЕрднреА new Integrations.RewriteFrames() рдХреЛ рд╕реЗрдВрдЯреНрд░реА рдХреЗ рдЗрдирд┐рдЯ рдореЗрдВ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдХреА рдХреБрдВрдЬреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдФрд░ рд╣рд░ рдирдП рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рд╕реЛрд░реНрд╕рдореИрдкреНрд╕ рдХреЛ рдЪреБрдирд╛ рдЬрд╛рдиреЗ рд▓рдЧрд╛ред

рдпрд╣ рдЬрд╛рдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ RewriteFrames рдПрдХреАрдХрд░рдг рдФрд░ node_modules рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ (рдЬреИрд╕рд╛ рдХрд┐ @ mieszko4 рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдЗрддрдиреА рд╕рд╛рд░реА рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдХрд╛рдлреА рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрд░реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЦреЛрдЬ рдереА,

captureException /catch-all рдкрд░ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреЛрдИ 'рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рдорд┐рд▓рд╛' рддреНрд░реБрдЯрд┐ рдЯреНрд░рд┐рдЧрд░ рд╣реБрдИ рд╣реИ

рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдЦреБрд▓рд╛ рд░рд╣рддрд╛ рд╣реИ:

рддреЛ рдпрд╣ captureException рд╕рд╛рде рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ captureEvent рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ?

рдпрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ: рдХреЛрдИ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ captureException рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди captureEvent рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЕрдкрд▓реЛрдб ( RewriteFrames рдПрдХреАрдХрд░рдг рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ) рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ "рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рдорд┐рд▓рд╛" - рддреНрд░реБрдЯрд┐ред рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рдпрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, @kamilogorek?

@guischdi рдЗрддрдиреА рджреЗрд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЯреНрд░реИрдХ рдереЛрдбрд╝рд╛ рдЦреЛ рджрд┐рдпрд╛ред рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рд╕реНрдореГрддрд┐ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдирдореВрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ рдХрд╛рдорд┐рд▓реЛрдЧреЛрд░реЗрдХ
рд╣рд╛рдБ, рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИ:

@guischdi рд╕рд┐рд░реНрдл рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрдЪреНрдЪреА рдиреЛрдб рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рд╣реИ? рдХреЛрдИ рд╡реЗрдмрдкреИрдХ рдирд╣реАрдВ, рдХреЛрдИ рд╕рдВрдХрд▓рди рдирд╣реАрдВ, рдХреЛрдИ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдирд╣реАрдВред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рдПрдХ index.js рдлрд╝рд╛рдЗрд▓? рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ рдХрд╛рдорд┐рд▓реЛрдЧреЛрд░реЗрдХ
рд╣рд╛рдБ, рдХрдЪреНрдЪрд╛ рдиреЛрдбрдЬреЗрдПрд╕ред рдКрдкрд░ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рджреВрд╕рд░реЗ рдореБрджреНрджреЗ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА index.js рд╕рднреА 13 рд▓рд╛рдЗрдиреЗрдВ рд╡рд╣рд╛рдВ рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВред

@guischdi рд╣рдо рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдПрдХ рд╣реА рдпреВрдЖрд░рдПрд▓ рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ 2 рдлреНрд░реЗрдо рдЗрд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ)ред рдЗрд╕ рдмреАрдЪ, рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ "JavaScript рд╕реЛрд░реНрд╕ рдлрд╝реЗрдЪрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ" рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛. https://sentry.io/settings/kamil-ogorek/projects/testing-project/
рдпрд╣ рдиреЛрдб рдРрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

@kamilogorek рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрдд 1 error encountered while processing this event: [...] Source code was not found ( рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦреЗрдВ)

рдЕрдЬреАрдм, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡реИрд╕реЗ рднреА, рд╣рдо рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдореИрдВ рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИред рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд░рд╣реЗрдЧрд╛!

@kamilogorek рдЗрд╕ рдкрд░ рдХреЛрдИ рдЦрдмрд░?

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рджреГрд╢реНрдп рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдХреБрдЫ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХреЗ рддрд╣рдд рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред

рдореИрдВ рд╕рдВрддрд░реА рдХреЛ рд╕реНрд╡-рд╣реЛрд╕реНрдЯреЗрдб рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ @sentry/node 5.4.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ:

// file: <path>/code/cli
const Sentry = require('@sentry/node');
Sentry.init({ dsn: process.env.SENTRY_DSN });
function test () {
  throw new Error('test');
}
test();

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИ:

image

рдФрд░ рдпрд╣рд╛рдБ рдвреЗрд░ рд╣реИ:

Error: test
  File "<path>/code/cli", line 10, col 9, in test
    throw new Error('test');
  File "<path>/code/cli", line 13, col 1, in Object.<anonymous>
    test();
  File "internal/modules/cjs/loader.js", line 1063, col 30, in Module._compile
  File "internal/modules/cjs/loader.js", line 1103, col 10, in Module._extensions..js
  File "internal/modules/cjs/loader.js", line 914, col 32, in Module.load
  File "internal/modules/cjs/loader.js", line 822, col 14, in Module._load
  File "internal/modules/cjs/loader.js", line 1143, col 12, in Module.runMain
  File "internal/main/run_main_module.js", line 16, col 11, in null.<anonymous>

рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдБ Source code was not found

@LukeXF рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдкреНрд░рднрд╛рд╡рд┐рдд рдШрдЯрдирд╛ рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЖрдк рд╕реНрд░реЛрдд рд╕рдВрджрд░реНрдн рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ, рдкреНрд░рд╢реНрди рдореЗрдВ рдкрдВрдХреНрддрд┐ рдХреЗ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдХреЛрдб) рднрд▓реЗ рд╣реА рдЖрдкрдХреЛ "рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ" рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдпрд╣ рд╣реИ рдХрд┐ рдПрд╕рдбреАрдХреЗ рдореЗрдВ, рд╣рдо рдИрд╡реЗрдВрдЯ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдХреЛ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╣рдорд╛рд░реА рдУрд░ рд╕реЗ рдПрдХ рдмрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде node_modules рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдиреЛрдб рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП; рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдк рд╡реИрд╕реЗ рднреА рдмрдВрдбрд▓/рдЫреЛрдЯрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред https://github.com/getsentry/sentry/pull/17538 рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рддреИрдирд╛рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рдмрд╛рд░ рдЬрдм рд╡рд╣ рднреВрдорд┐ рдХреЛ рдареАрдХ рдХрд░ рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рд╣рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ/рдкреНрд░рд╢реНрди рд╣реИрдВ, рдФрд░ рд╡реЗ рдХреНрдпрд╛ рд╣реИрдВ? рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдирдорд╕реНрддреЗ @lobsterkatie
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдПрдирдкреАрдПрдо рдкрд░ рд╡рд░реНрддрдорд╛рди рд░реАрдбрдореЗ рд╕реЗ рдЫреАрди рд▓рд┐рдпрд╛ рдЧрдпрд╛):

const Sentry = require('@sentry/node');

Sentry.init({ dsn: process.env.DSN });

(async () => {
  Sentry.captureException(new Error('Good bye'));
})();

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рдореЗрдВ рдЕрднреА рднреА https://sentry.io/share/issue/0247fe07741c4e358089461f113cef42/ рдкрд░ Source code was not found рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
рдХреНрдпрд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд▓ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реБрдзрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рд╣реИ?

рд╡рд░реНрддрдорд╛рди v4.xx рд╕рдВрд╕реНрдХрд░рдг (v4.6.6) рдФрд░ @sentry/node рдХреЗ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ (v5.14.0) рдХреЗ рд╕рд╛рде рднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред

@guischdi рдЖрдкрдиреЗ рдХреЛрдИ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рдХреА рд╣реИрдВ, рди рд╣реА рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреЛрдИ рд░рд┐рд▓реАрдЬрд╝ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдкрд╣рд▓реЗ рдбреЙрдХреНрд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ: https://docs.sentry.io/platforms/node/sourcemaps/

@ рдХрд╛рдорд┐рд▓реЛрдЧреЛрд░реЗрдХ

SDK рдореЗрдВ, рдИрд╡реЗрдВрдЯ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рд╕реЗ рднреА рддреНрд░реБрдЯрд┐ рдЖ рд░рд╣реА рд╣реИ рдЬреЛ рдЙрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рднрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╣рдорд╛рд░реА рдУрд░ рд╕реЗ рдПрдХ рдмрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдЕрдЧрд░ рдореИрдВ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ (рдКрдкрд░ рдЙрджреНрдзреГрдд) @lobsterkatie рд╕рдордЭ рдЧрдпрд╛, рддреЛ рдореБрдЭреЗ рдХреЛрдб рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╕рдорд╕реНрдпрд╛ рд▓рд┐рдВрдХ рдореЗрдВ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрджрд░реНрдн рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб)ред рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореБрдЭреЗ рд╕реНрд░реЛрддрдореИрдк рдЕрдкрд▓реЛрдб/рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ), рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдорд┐рдиреАрдлрд╛рдЗрдб рд╕рд╛рджрд╛ Node.js рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдмрдЪрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрджрд░реНрдн рдареАрдХ рд╕реЗ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдпрд╣ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирддрд╛ рдХрд┐ рдЙрд╕реЗ рдореЗрд░реА рдУрд░ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдкрд▓реЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред (рдХреНрдпрд╛ рдореБрдЭреЗ рд╡рд╣ рд╕рд╣реА @lobsterkatie рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ?)

@guischdi рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╡рд╣ рддрд▓рд╛рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдЖрдкрдХреЗ рдРрдк рд╕реЗ рд╣реИ, рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рд╕реЗ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЬреЛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рд╣реИ (рддреГрддреАрдп рдкрдХреНрд╖ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рд╡рд╣ рдпрд╣рд╛рдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдиреЛрдб рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдХрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрджрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП), рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕реНрд░реЛрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдмреЗрдмреЗрд▓ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрдЬрд╛рдп рдХреЛрдб рдХреЛ рд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдЪрд┐рддреНрд░ред

рдареАрдХ рд╣реИ, рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ UX рдмрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдЪрд╛рд╣рд┐рдП (Node.js рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо) рдХреЗрд╡рд▓ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП Source code was not found рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рдХреБрдЫ Source maps were not found ред рдЗрд╕рд╕реЗ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛;)
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлреНрд░рдВрдЯрдПрдВрдб/рдбрд┐рд╕реНрдкреНрд▓реЗ рднрд╛рдЧ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдмрд╕ рдЗрд╕реЗ рдмрдВрдж рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдЧрд▓рддрдлрд╣рдореА рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВред рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

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

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

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

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

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

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

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