Sentry-javascript: рдШрдЯрдирд╛: рдЧреИрд░-рддреНрд░реБрдЯрд┐ рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛: currentTarget, isTrusted, рд▓рдХреНрд╖реНрдп, рдкреНрд░рдХрд╛рд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЕрдкреНрд░реИрд▓ 2020  ┬╖  21рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: getsentry/sentry-javascript

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

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

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

5.10.2

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

рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрдХреНрд╕рд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдИрд╡реЗрдВрдЯ рдЧреИрд░-рддреНрд░реБрдЯрд┐ рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛: currentTarget, isTrusted, target, typeя╝М рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗред рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд╣реИ

__serialized__ = {
    currentTarget: [object Null], 
    isTrusted: [Circular ~], 
    target: head > script[type="text/javascript"], 
    type: error
}

рдПрдХ рдШрдЯрдирд╛ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рд╕реАрдорд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рдея╝МрдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдмрдЧ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ рд╣реИя╝МрдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ?

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

рдЗрд╕ рддреНрд░реБрдЯрд┐ рдиреЗ рдореЗрд░реА рдХреЛрдЯрд╛ рдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред

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

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

рд╡рд╣реА рдпрд╣рд╛рдБ, рдЕрдм рд╕рдВрддрд░реА v5.15.5 рдкрд░ред

рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрддрд░реА рдореЗрдВ рдХреИрдж рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдбрд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ ( target рдХрд┐ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

@kamilogorek рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдЕрдкрдиреА рдХрдВрдкрдиреА рдХрд╛ рдИрдореЗрд▓ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЕрдЧрд░ рдЖрдкрдХреЛ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рддреЛ рдореИрдВ рдХреБрдЫ рднреА @kamilogorek рднреЗрдЬ рд╕рдХрддрд╛

@рд╢реАрд▓рд╛ рд╣рд╛рдВ, рдкреНрд▓реАрдЬ

@рд╢реАрд▓рд╛ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдпрд╣рд╛рдВ рдмрд╣реБрдд рдХреБрдЫ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЗрдПрд╕ рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рджрд╛рди рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдЬрдм рднреА рдХрд┐рд╕реА рд╡рд╛рджрд╛ рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ onunhandledrejection рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ (рдУрдкреА рд╡рд┐рд╡рд░рдг рдореЗрдВ onerror рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╣реЛрддрд╛ рд╣реИ)ред

https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдХреЛ рднреА рд╡рд╣рд╛рдБ рдХрд┐рд╕реА рднреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рд╛рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХреЗред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб Promise.reject("whatever") рдпрд╛ Promise.reject(jQueryBecauseWhyNot) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп JS рдХреЛрдб рд╣реИред

рдЬрдм рднреА рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЖрджрд┐рдо рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╡рд╕реНрддреБ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ (рдЬреИрд╕реЗред Error ) рдпрд╛ рдЖрдВрддрд░рд┐рдХ DOM рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╕рд░рд▓ рд╡рд╕реНрддреБ рдХреНрд░рдорд╛рдВрдХрди рдкрд░ рд╡рд╛рдкрд╕ рдЖрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЬреЛ рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣рдо рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЗрд╕рдХрд╛ред рдЖрдк рд╕рдВрднрд╛рд╡рд┐рдд рдкрдереЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП eventbuilder.ts рдлрд╝рд╛рдЗрд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ "рдХреЛрдИ рднреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди" рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - https://github.com/getsentry/sentry-javascript/blob/master/packages/ рдмреНрд░рд╛рдЙрдЬрд╝рд░/src/eventbuilder.ts# L17 -L80

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

(рдмрд╛рддрдЪреАрдд рдХреЛ рдЕрдиреНрдп рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдИрдореЗрд▓ рдХреЗ рдмрдЬрд╛рдп рдпрд╣рд╛рдВ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ:

  • рдХреЗрд╡рд▓ рдореЛрдмрд╛рдЗрд▓ рдпрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ Safari рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ;
  • рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рд╡реЗрдм рдРрдк рдореЗрдВ ZXing рдФрд░ browser-image-compression рдЬреИрд╕реА рдХреБрдЫ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рддреГрддреАрдп-рдкрдХреНрд╖ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реИ;
  • рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдареАрдХ рдЙрд╕реА рд╕рдордп рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ (рдХреЛрдб 0) рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред
  • рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ ProgressEvent , рди рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдШрдЯрдирд╛ - рдЬреЛ HTTP рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ (рдореИрдВ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)ред
ADDITIONAL DATA

__serialized__ | {
    currentTarget: [object Null],
    isTrusted: [Circular ~],
    target: [object FileReader],
    type: error}
-- | --

рдореБрдЭреЗ рдЕрднреА рднреА "рдЧреИрд░-рддреНрд░реБрдЯрд┐ рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд╢реВрдиреНрдп" рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ @ рдПрдВрдЯреЛрди-рдмреЙрдЯ рдкреНрд░рднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ 10.15.6 рдкрд░ рд╕рдлрд╛рд░реА 13.1.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред

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

рдпрд╣ рднреА рдкрд┐рдЫрд▓реЗ рджреЛ рд╕рдкреНрддрд╛рд╣ рд╕реЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдкрд░ рд╣рдордиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЙрди рдкреГрд╖реНрдареЛрдВ рдкрд░ рджреЗрдЦрд╛ рд╣реИ рдЬреЛ Google рдорд╛рдирдЪрд┐рддреНрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдИ рдФрд░ рдЗрд╕реЗ рдпреВрдЖрд░рдПрд▓ рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ рдЬреЛ Google рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЕрдм рддрдХ рд╣рдордиреЗ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрд╛ рд╣реИ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛:

{
  currentTarget: [object Null], 
  isTrusted: [Circular ~], 
  target: head > script[type="text/javascript"], 
  type: error
}

@asbjornh рдирд╣реАрдВ, рдореЗрд░реЗ рдкреГрд╖реНрда рдореЗрдВ Google рдорд╛рдирдЪрд┐рддреНрд░ рдирд╣реАрдВ рд╣реИ

@kamilogorek рдХреНрдпрд╛ рдУрдкреА рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ (рдФрд░ рдореЗрд░рд╛) рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реЛрдЧрд╛ Promise.reject(new Event("error")) ? рдпрд╛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдВрддрд░реА рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдкреЗрд▓реЛрдб рд╣реЛрдВрдЧреЗ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ?

@asbjornh рд╣рд╛рдБ, рдпрд╣ рддрдм рдЗрд╕ рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдЧреБрдЬрд░реЗрдЧрд╛ - https://github.com/getsentry/sentry-javascript/blob/caff9e7b308f99f04443d57d990c252a51a153bf/packages/browser/src/eventbuilder.ts#L97 -L107

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

рдЗрд╕ рддреНрд░реБрдЯрд┐ рдиреЗ рдореЗрд░реА рдХреЛрдЯрд╛ рдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдкрд┐рдЫрд▓реЗ 24 рдШрдВрдЯреЛрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ 289 рдЗрд╡реЗрдВрдЯ рд╣реИрдВ - рдФрд░ рд╣рдорд╛рд░рд╛ рдкреЗрдЬ рдЕрднреА рд▓рд╛рдЗрд╡ рднреА рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ..

{
currentTarget: [object Null], 
isTrusted: [Circular ~], 
target: head > link, 
type: error
}

рд╣рдо next.js . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдпрд╣рд╛рдБ cra . рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ:

new Promise((resolve, reject) => {
  const script = document.createElement('script');
  script.src = src;
  script.onload = resolve;
  script.onerror = reject;
  document.body.appendChild(script);
});

onerror рд╣реБрдХ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Error рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрдЬрд╛рдп рдПрдХ Event рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЬреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИред https://developer.mozilla.org/de/docs/Web/API/HTMLScriptElement рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ Event рдХреЛ Error рд╕рд╛рде рд▓рдкреЗрдЯрдХрд░ рдЗрд╕рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

new Promise((resolve, reject) => {
  const script = document.createElement('script');
  script.src = src;
  script.onload = resolve;
  script.onerror = event => {
    reject(new Error(`Failed to load ${event.target.src}`));
  };
  document.body.appendChild(script);
});

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдиреЗрдХреНрд╕реНрдЯ.рдЬреЗрдПрд╕ рдХрд╛ 9.5.2 рдкреНрд░реАрдлреЗрдЪрд┐рдВрдЧ рддрдВрддреНрд░ рдерд╛ рдЬреЛ рдЗрд╕реЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдкрд░ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдмрд╕ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рд╣реА рдорд╛рдорд▓рд╛ рд╣реЛред (рд╢рд╛рдпрдж рдпрд╣рд╛рдБ? https://github.com/getsentry/sentry-javascript/issues/2546#issuecomment-697771381) рдпрд╣ рдореБрджреНрджрд╛ рд╣реИ: https://github.com/vercel/next.js/pull/16757 рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ 9.5.3 рдпрд╛ рдХреИрдирд░реА рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐:

Uncaught (in promise) 
error
bubbles: false
...
...
as: "fetch"
assignedSlot: null
attributes: NamedNodeMap(3
0: href="/_next/data/wmQYPCwvbuBulJfEwTMRf/smartwatches/fitbit-ionic.json"
1: rel="prefetch"
2: as="fetch"
as: as="fetch"
href: href="/_next/data/wmQYPCwvbuBulJfEwTMRf/smartwatches/fitbit-ionic.json"
length: 3
rel: rel="prefetch"
...
...
тАЛ
isTrusted: true
originalTarget: <link href="/_next/data/wmQYPCwvbuBuтАжtches/fitbit-ionic.json" rel="prefetch" as="fetch">
returnValue: true
srcElement: <link href="/_next/data/wmQYPCwvbuBuтАжtches/fitbit-ionic.json" rel="prefetch" as="fetch">тАЛ
target: <link href="/_next/data/wmQYPCwvbuBuтАжtches/fitbit-ionic.json" rel="prefetch" as="fetch">
timeStmp: 25366
type: "error"
...

рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрддрд░реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ Turbo87 рд╣рд╛рдБ! рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ @googlemaps/js-api-loader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╣реА рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рд╡реЗ рдареАрдХ рд╡рд╣реА рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдпрд╣рд╛рдБ рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!!

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

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

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

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

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

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

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