Sentry-javascript: @ рд╕рдВрддрд░реА / рдиреЛрдб рдореЗрдореЛрд░реА рдиреЛрдб рдкрд░ рдиреЛрдб 10.13.0

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

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

  • [x] @sentry/browser
  • [x] @sentry/node

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

4.3.4

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

рдореИрдВ рдЖрд╣ рдЕрдЧрд▓реЗ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред Js рдкрд░рд┐рдпреЛрдЬрдирд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ https://github.com/sheerun/next.js/tree/with-sentry-fix/examples/with-sentry рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдпрд╛ рдФрд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рдВрддрд░реА рдореЗрдВ рд╕реНрдореГрддрд┐-рд░рд┐рд╕рд╛рд╡ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореЗрдорд╡реЙрдЪ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ

if (!dev) {
  memwatch.on("leak", info => {
    console.log("memwatch::leak");
    console.error(info);
  });

  memwatch.on("stats", stats => {
    console.log("memwatch::stats");
    console.error(Util.inspect(stats, true, null));
  });
}

рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдкрд░ рдмрдордмрд╛рд░реА рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреБрди: рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛:

    "/",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/_app.js",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/_error.js",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/index.js",
    "/_next/static/runtime/main-1eaa6d1d0c8e7d048efd.js",
    "/_next/static/chunks/commons.b34d260fee0c4a698139.js",
    "/_next/static/runtime/webpack-42652fa8b82c329c0559.js"

рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реНрдореГрддрд┐-рдЙрдкрдпреЛрдЧ рдореЗрд░реЗ рд▓рд┐рдП рдмреЗрд╣рдж рдмрдврд╝рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдореИрдВ рдЕрдиреБрд░реЛрдз рдФрд░ рддреНрд░реБрдЯрд┐рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рд╣рдЯрд╛рддрд╛ рд╣реВрдВред рд╕реНрдореГрддрд┐-рд░рд┐рд╕рд╛рд╡ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдпрд╣ рдЙрди 2 рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд▓рдЧрддрд╛ рд╣реИ

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

@michalkvasnicak рдореИрдВрдиреЗ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдпрд╣ рд╕реАрдзреЗ рд╕рдВрддрд░реА рдХреА рд╡рдЬрд╣ рд╕реЗ рдирд╣реАрдВ рд╣реИред

рд╣рдорд╛рд░реЗ @sentry/node рдкрд░рд┐рд╡рд╣рди рдХреА https-proxy-agent рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреА agent-base рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреИрдЪ-рдХреЛрд░.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ _and_ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдПрдХ рд░рд┐рд╕рд╛рд╡ рдмрдирд╛рддрд╛ рд╣реИ:

https://github.com/TooTallNate/node-agent-base/issues/22

рдЖрдк рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЙрдкреА рдХрд░рдХреЗ рдФрд░ рдвреЗрд░ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

const url = require("url");
const https = require("https");

https.request = (function(request) {
  return function(_options, cb) {
    let options;
    if (typeof _options === "string") {
      options = url.parse(_options);
    } else {
      options = Object.assign({}, _options);
    }
    if (null == options.port) {
      options.port = 443;
    }
    options.secureEndpoint = true;
    return request.call(https, options, cb);
  };
})(https.request);

https.get = function(options, cb) {
  const req = https.request(options, cb);
  req.end();
  return req;
};

it("works", () => {
  expect(true).toBe(true);
});

рд╣рдо рд╢рд╛рдпрдж рдЗрд╕реЗ рдХрд╛рдВрдЯрд╛ рдХрд░реЗрдВрдЧреЗ рдпрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд▓рд┐рдЦреЗрдВрдЧреЗред

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

@abraxxas рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╕рдВрд╕реНрдорд░рдг рдХреЛ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднрд╛рдЧреНрдп рдХреЗ рдЖрдкрдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдБрдХрдбрд╝реЗ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдХрднреА рднреА рд▓реАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@kamilogorek рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд╛рдБрдЪ рдХреА https://github.com/sheerun/next.js/tree/with-sentry-fix/examples/with-sentry рдФрд░ server.js рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдорд░рдг рдЬреЛрдбрд╝рд╛

if (!dev) {
  memwatch.on("leak", info => {
    console.log("memwatch::leak");
    console.error(info);
  });

  memwatch.on("stats", stats => {
    console.log("memwatch::stats");
    console.error(Util.inspect(stats, true, null));
  });
}

рдлрд┐рд░ рдореИрдВрдиреЗ рдиреЛрдб 10.x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ (8.xi рдХреЗ рд╕рд╛рде рдХреЛрдИ рдореЗрдореЛрд░реА рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛) рдФрд░ рд╣рдорд╛рд░реЗ рдЧреИрдЯрд▓рд┐рдВрдЧ рдЯреЗрд╕реНрдЯрд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛:

    "/",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/_app.js",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/_error.js",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/index.js",
    "/_next/static/runtime/main-1eaa6d1d0c8e7d048efd.js",
    "/_next/static/chunks/commons.b34d260fee0c4a698139.js",
    "/_next/static/runtime/webpack-42652fa8b82c329c0559.js"

(рдиреЛрдЯ рд╣реИрд╢ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ)

рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ https://www.simonholywell.com/post/2015/06/parallel-benchmark-many-urls-with-apachebench/

рдХреБрдЫ рд╣рдЬрд╝рд╛рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрднрдЧ 1GB рд╣реЛ рдЧрдпрд╛ рдФрд░ рдХрднреА рднреА рдХрдо рдирд╣реАрдВ рд╣реБрдЖред рдЬреИрд╕реЗ рд╣реА рдореИрдВ рдЕрдиреБрд░реЛрдз рдФрд░ рддреНрд░реБрдЯрд┐рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рд╣рдЯрд╛рддрд╛ рд╣реВрдВред рд╕реНрдореГрддрд┐-рд░рд┐рд╕рд╛рд╡ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ 2. рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдХрдо рдЕрдиреБрд░реЛрдз рдереЗ рдпрд╛ рдиреЛрдб 8.x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛?

@abraxxas рдиреЗ рдкреБрд╖реНрдЯрд┐ рдХреАред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдиреЛрдб 10 + ~ 300req рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдЧреЗ рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред рдзрдиреНрдпрд╡рд╛рдж!

@kamilogorek рдЗрдВрдЯрд░рд╕реНрдЯрд┐рдВрдЧ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреЗ рдореЗрдВ рдвреЗрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ
рдкреНрд░рдЬрдирди рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд▓рдЧрднрдЧ 20mb рддрдХ рд░рд╣рддрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд╕рд╛рде рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмрд┐рдирд╛ рд╕реНрдореГрддрд┐-рд░рд┐рд╕рд╛рд╡ рдХреА рдЪреЗрддрд╛рд╡рдиреА рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рд╣реЛрддреА рд╣реИ
рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдХрд╛рд░рдг рдореЗрдореЛрд░реА рдореЗрдВ рдХреБрдЫ рдХрдореА рд╣реИред

рдЕрднреА рднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмреАрдЪ рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдмрд╣реБрдд рдЕрдВрддрд░ рд╣реИ
рд╕рдВрддрд░реА рдФрд░ рдмрд┐рдирд╛ред

рдереВ рдкрд░, 29 рдирд╡рдВрдмрд░ 2018, 12:45 рдХрд╛рдорд┐рд▓ рдУрдЧреНрд░реЗрдХ < рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@abraxxas https://github.com/abraxxas рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕реЗ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛,
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдЕрднреА рднреА рдЕрдиреБрд░реЛрдз рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд▓реАрдХ рдХрд░рддрд╛ рд╣реИ,
рд╕рдВрддрд░реА рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмрд┐рдирд╛ рднреАред

https://streamable.com/bad9j

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

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/getsentry/sentry-javascript/issues/1762#issuecomment-442804709 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AIbrNlgPjPd5Jra1aahR-Dthf7XvbCexks5uz8jjgaJpZM4Yv4A2
ред

@abraxxas рдиреЗ рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА (рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛) рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реА рддрд░рдл рд╣реИ :)

рдпрд╣ рдиреЛрдб рдХреЗ рдореВрд▓ рдореЗрдВ рд╣реА рдореБрджреНрджрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ https://github.com/getsentry/sentry-javascript/issues/1762#issuecomment -444126990

@kamilogorek рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрднреА рддрдХ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рд╛ рд╣реИ? рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝реА рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИред рдвреЗрд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд░реЗрдЦрд╛ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдбрд╝ рд╣реЛ рд╕рдХрддреА рд╣реИ:

https://github.com/getsentry/sentry-javascript/blob/c27e1e32d88cc03c8474fcb1e12d5c9a2055a150/packages/ode/src/handlers.ts#L233

рдирд┐рд░реАрдХреНрд╖рдХ рдиреЗ eventProcessors рд╕реВрдЪреА рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИрдВ
image

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

@abraxxas @tpbowden рдиреЛрдб рдХреЗ рдореВрд▓ рдореЗрдВ рдбреЛрдореЗрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдореЙрдирд┐рдЯрд░ рдХрд░рддреЗ рд░рд╣реЗрдВрдЧреЗ рдФрд░ рдХреЛрд░ рдореЗрдВ рддрдп рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджрд╛: https://github.com/nodejs/node/issues/23862

@kamilogorek рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрд╛ рдЕрд╕реНрдерд╛рдпреА рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ? рдиреЛрдб рд╕рдорд╕реНрдпрд╛ рдкрд░ рдкреНрд░рдЧрддрд┐ рдХрд╛рдлреА рдзреАрдореА рд╣реИ

рдЬрдм рд╣рдо рдореЗрдореЛрд░реА рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ Node.js рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://pm2.io/doc/en/runtime/features/memory-limit/#max -memory-threshold-auto-reload

рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд▓реАрдХ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд▓реАрдХ рдбрд┐рдмрдЧ рдХреЗ рд▓рд┐рдП рджрд░реНрджрдирд╛рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдИрдЯреАрдП рд╣реИ?

1 рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛
рдкрд░реАрдХреНрд╖рдг рдЕрд╡рдзрд┐: 1832 рдПрдордПрд╕
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реАрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: __ рдлреИрд▓реА, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __spread, __asyncGener, __asyncGener, __Gator, __Gator, __Generator, __Agadator, __Agadator, __Gadator

npm рдИрдЖрд░рдЖрд░! рдХреЛрдб ELIFECYCLE
npm рдИрдЖрд░рдЖрд░! рдЧрд▓рдд 1
npm рдИрдЖрд░рдЖрд░! рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рдкрд░реАрдХреНрд╖рдг lab build/test
npm рдИрдЖрд░рдЖрд░! рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ 1
npm рдИрдЖрд░рдЖрд░!
npm рдИрдЖрд░рдЖрд░! рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░[email protected] ред
npm рдИрдЖрд░рдЖрд░! рдпрд╣ рд╢рд╛рдпрдж npm рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдКрдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЙрдЧрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

npm рдИрдЖрд░рдЖрд░! рдЗрд╕ рд░рди рдХрд╛ рдПрдХ рдкреВрд░реНрдг рд▓реЙрдЧ рдЗрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
npm рдИрдЖрд░рдЖрд░! /User/sunknudsen/.npm/_logs/2019-02-13T14_41_28_595Z-debug.log

@sunknudsen рдореБрджреНрджрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ NodeJS рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, https://github.com/nodejs/node/issues/23862 рдФрд░ https://github.com/nodejs/node/pull/25993 рджреЗрдЦреЗрдВред рд╣рдо рд╢рд╛рдпрдж рдПрдХ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

@garthenweb рдкреИрдХреЗрдЬ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг @sentry/node рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ? рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЛ рдореИрдВ рдПрдЪрдкреАрдЖрдИ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝реЗ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ)ред

@sunknudsen рдХрдореЛрдмреЗрд╢ред рдпрд╣ (рдкрджрд╛рд╡рдирдд) рдбреЛрдореЗрди рдкреИрдХреЗрдЬ рдФрд░ рд╡рд╛рджреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ рдЬрд╣рд╛рдБ рддрдХ рдореИрдВрдиреЗ рд╕рдордЭрд╛ рдерд╛ред Https://github.com/getsentry/sentry-javascript/blob/master/packages/node/src/handlers.ts#L233 рджреЗрдЦреЗрдВ

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ (рдПрдХреНрд╕рдкреНрд░реЗрд╕) рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрддрд░реА рдмрд┐рдЪреМрд▓рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред

рдпрд╣ рдиреЛрдб рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рд╕рдВрддрд░реА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрддрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ;

image

@MartijnHols рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдПрдХ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рдПрд╕рдбреАрдХреЗ рдореЗрдореЛрд░реА рдлреБрдЯрдкреНрд░рд┐рдВрдЯ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рд░реЛрдорд╛рдВрдЪ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ https://github.com/getsentry/sentry-javascript/pull/1919 рдХрд░рдХреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

@ рд╣рдЬрд╝реИрдЯ рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд▓ рд░рд╛рдд рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ (23:10 рдЧреНрд░рд╛рдл рдореЗрдВ) рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╣реИрдВрдбрд▓рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ред рд▓рдЧрднрдЧ 23: 00-24: 00 (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рджрд┐рди рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ) рдореЗрдВ рд╕реАрдкреАрдпреВ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдорд╛рдореВрд▓реА рд╕реНрдкрд╛рдЗрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмрд┐рдирд╛ рдорд╛рдирдХ рд╕реАрдкреАрдпреВ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбрд░рд╛рд╡рдирд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдХрд╛рд░рдг рд╣реИ рдпрд╛ рдпрд╣ рд╣реИрдВрдбрд▓рд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдХреБрдЫ рд╣реА рдШрдВрдЯреЛрдВ рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рд▓рдЧрднрдЧ 2.5 рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрдХрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВред

image

@MartijnHols рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдмрд╛рддреЗрдВ, рдиреЛрдб рдореЗрдВ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рд▓реАрдХ рдлрд┐рдХреНрд╕ рдиреЛрдб рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ 11.10 рдореЗрдВ рдЙрддрд░рд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ 5.0.0-beta1 рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЧрд▓рддреА рд╕реЗ latest , 5.0.0-rc.1 рд░реВрдк рдореЗрдВ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдм рдирд╡реАрдирддрдо next рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
рдХреГрдкрдпрд╛ 5.0.0-rc.1 рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рд╣рдордиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХрддрд╛рд░рдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬрд┐рд╕рд╕реЗ рд▓реЛрдб / рдореЗрдореЛрд░реА рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рд╣реЛред

11.12 рдХреЛ рдиреЛрдб рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдФрд░ рд╕реАрдкреАрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЕрдм рдХреЛрдИ рднреА рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рдЬрдм рдЗрд╕рдХреА рддреБрд▓рдирд╛ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЙрди рд╕рднреА рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рднреА рдареАрдХ рд╕реЗ рдкрдХрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдирдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рдХрдВрд╕реЛрд▓ "рдмреНрд░реЗрдбрдХреНрд░рдВрдм" рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ)ред рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ 5.0.0 рдХреЗ рд▓рд┐рдП рдФрд░ рдХреНрдпрд╛ рдЬрд╛рдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВред рдЕрдЧрд░ рдореИрдВ рдХрд┐рд╕реА рднреА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧрддрд╛ рд╣реВрдВ рддреЛ рдЖрдкрдХреЛ рдмрддрд╛ рджреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдирд╣реАрдВред

LGTMред рдзрдиреНрдпрд╡рд╛рдж!

рдореБрдЭреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣реА рдЦреБрд╢реА рд╣реЛрдЧреАред @ рд╣рдЬрд╝реИрдЯ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ 11.10 рдХрд╛ рдлрд╝рд┐рдХреНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдХреНрд░рд┐рдп LTS рд░рд┐рд▓реАрдЬрд╝ 10.x рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

@adriaanmeuris рдореИрдВрдиреЗ рдкрдврд╝рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдкреВрдЫрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ 10.x рдорд┐рд▓реЗрдЧрд╛, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐ рд╡реЗ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред
рд░реЗрдлрд░реА: https://github.com/nodejs/node/pull/25993#issuecomment -46536501

рдореИрдВрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕реНрдХреЛрдк рдмрдирд╛рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛

рдореИрдВрдиреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ services/sentry рдмрдирд╛рдИ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреА рд╣реИ

import {
  NodeClient as SentryClient, Hub, Integrations, Scope,
} from '@sentry/node';
import config from 'config';

const sentryClient = new SentryClient({
  ...config.sentry,
  frameContextLines: 0,
  integrations: [new Integrations.RewriteFrames()],
});

export default () => {
  const scope = new Scope();
  const client = new Hub(sentryClient, scope);
  return Object.freeze({ client, scope });
};

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

app.use((req, res, next) => {
  req.sentry = getSentry();
  req.sentry.scope.setTag('requestId', req.requestId);
  req.sentry.scope.setExtra('More info', 'XXXXXX');
  next();
});
....
// and use the express error handler
app.use((err, req, res, next) => {
  const code = err.code || 500;
  res.status(code).json({
    code,
    error: err.message,
  });
  if (code >= 500) {
    req.sentry.client.captureException(err);
  }
  next();
});

рдЗрд╕рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдЕрдкрдиреЗ рдлрд┐рдХреНрд╕реНрдб рд▓реАрдХ рдХрд░рддреА рд╣реИ

image

@ рдХреЙрдбреНрд╕ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдПрдХ рдмрд╛рдд рд╣реИ

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

@ рд╣рдЬрд╝реИрдЯ рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐, рд▓реЗрдХрд┐рди рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдХреАрдордд рд╣реИред рдЙрд╕ рд╡рд┐рд╢рд╛рд▓ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕ рдЦреЛ рдЬрд╛рдиреЗ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдХреБрдЫ рдЪреАрдЬреЗрдВ рдХреАрдВред

  1. рдореИрдВ рдЙрди рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдкреВрд░реНрд╡рд╡реНрдпрд╛рдкреА / рд╡рд╛рджреЗ рдХреА рдШрдЯрдирд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
  2. рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдХреЗ рд▓рд┐рдП рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдкреБрдирдГ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рди рд╣реЛ ..
  3. @sentry/webpack-plugin рд╕рд╛рде рд╕рдВрддрд░реА рдХреЗ рд▓рд┐рдП sourcemaps рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ
  4. рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░ рдЯреИрдЧ / рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛

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

req.sentry.scope.setTag('transaction', `${req.method}|${req.route ? req.route.path : req.path}`);

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

@ рд╣рдЬрд╝рдЯ @kamilogorek рд╣рдо рдЕрднреА рднреА [email protected] рдФрд░ [email protected] рдкрд░ рд╡рд┐рд╢рд╛рд▓ рдореЗрдореЛрд░реА рдЧреНрд░реЛрде рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ - рдХреНрдпрд╛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЗрд╕ рдиреЛрдбрдЬ рдкреИрдЪ рдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИ?

@tpbowden рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдПрдХ repro рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ?
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпрд╛ рдЖрдк рд╕рдВрддрд░реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@ рд╣рдЬрд╝реИрдЯ рдореИрдВрдиреЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╕рд░реНрд╡рд░ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ (рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░рд┐рдПрдХреНрдЯ) рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрддрд░реА рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рд╣рдо рд╡рд┐рд╢рд╛рд▓ рдореЗрдореЛрд░реА рдЧреНрд░реЛрде (рднрд╛рд░реА рднрд╛рд░ рдХреЗ рддрд╣рдд рдЗрд╕реЗ ~ 10 рдПрдордмреА / рд╕реЗрдХрдВрдб рддрдХ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ) рдорд╛рд░ рд░рд╣реЗ рд╣реИрдВред рдЬрдм рд╣рдо рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рд╕реЗ Sentry.Handlers.requestHandler() рдорд┐рдбрд▓рд╡реЗрдпрд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рддреЛ рдореЗрдореЛрд░реА ~ 200MB рдкрд░ рд╕реНрдерд┐рд░ рд░рд╣рддреА рд╣реИ

рд╣рдо рдХрд┐рд╕реА рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреЗрд╡рд▓ @sentry/node ред рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реВрдВ?

@ рд╣рдЬрд╝реИрдЯ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ @sentry/node рд╕реЗ externals рдЬреБрдбрд╝рдиреЗ рд╕реЗ рд╣рдорд╛рд░реА рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИ рд╣реИред рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ?

рд▓реАрдХ рдЕрднреА рднреА @ рд╕рдВрддрд░реА / рдиреЛрдб 5.1.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдиреЛрдб 11.14.0 рдкрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ

рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рд░рд┐рд╕рд╛рд╡ @ рд╕рдВрддрд░реА / рдиреЛрдб рдФрд░ i18next- рдПрдХреНрд╕рдкреНрд░реЗрд╕-рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдмреАрдЪ рдХреЗ рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдРрдк https://github.com/i18next/react-i18next/blob/master/example/razzle-ssr/src/server.js рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ

рдпрджрд┐ рд╣рдо .use(Sentry.Handlers.requestHandler()); .use(i18nextMiddleware.handle(i18n)) рддреЛ рд╣рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рдиреАрдЪреЗ рд╕рдВрддрд░реА рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

рд╣рдореЗрдВ рднреА рд╡рд╣реА рддрдХрд▓реАрдлрд╝ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ node 10.15.3 рдФрд░ 11.14.0 рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдпрд╛ред рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рднрдВрдбрд╛рд░ рд╣реИ https://github.com/michalkvasnicak/sentry-memory-leak-reproductionред рдмрд╕ yarn test рдпрд╛ yarn test:watch рдЪрд▓рд╛рдПрдВ рдЬреЛ рдвреЗрд░ рдЙрдкрдпреЛрдЧ рдХреА рд╕реВрдЪрдирд╛ рджреЗрдЧрд╛ред рдпрд╣ рд╣рдореЗрд╢рд╛ рдмрдврд╝рддрд╛ рд╣реИред

yarn test
image

yarn test:watch

image

image

@michalkvasnicak рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдкреНрд░рд╢реНрди рд╣реИрдВред

рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд╕рдбреАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

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

it('works', () => {
  expect(true).toBe(true);
});

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

рдХреНрдпрд╛ рд▓реАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдо рдХреБрдЫ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@ рд╣рдЬрд╝реИрдЯ рд╣рд╛рдБ рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд░рд┐рд╕рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, jest рд▓реАрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рд┐рд░реНрдл @sentry/node рдХреЗ рдЖрдпрд╛рдд рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╕реЗ рд▓реАрдХ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред

@michalkvasnicak рдореИрдВрдиреЗ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдпрд╣ рд╕реАрдзреЗ рд╕рдВрддрд░реА рдХреА рд╡рдЬрд╣ рд╕реЗ рдирд╣реАрдВ рд╣реИред

рд╣рдорд╛рд░реЗ @sentry/node рдкрд░рд┐рд╡рд╣рди рдХреА https-proxy-agent рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреА agent-base рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреИрдЪ-рдХреЛрд░.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ _and_ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдПрдХ рд░рд┐рд╕рд╛рд╡ рдмрдирд╛рддрд╛ рд╣реИ:

https://github.com/TooTallNate/node-agent-base/issues/22

рдЖрдк рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЙрдкреА рдХрд░рдХреЗ рдФрд░ рдвреЗрд░ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

const url = require("url");
const https = require("https");

https.request = (function(request) {
  return function(_options, cb) {
    let options;
    if (typeof _options === "string") {
      options = url.parse(_options);
    } else {
      options = Object.assign({}, _options);
    }
    if (null == options.port) {
      options.port = 443;
    }
    options.secureEndpoint = true;
    return request.call(https, options, cb);
  };
})(https.request);

https.get = function(options, cb) {
  const req = https.request(options, cb);
  req.end();
  return req;
};

it("works", () => {
  expect(true).toBe(true);
});

рд╣рдо рд╢рд╛рдпрдж рдЗрд╕реЗ рдХрд╛рдВрдЯрд╛ рдХрд░реЗрдВрдЧреЗ рдпрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд▓рд┐рдЦреЗрдВрдЧреЗред

рдЗрд╕ рдПрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓?

https://nodejs.org/en/blog/release/v10.16.0/

рдХреБрдЫ рд╕реНрдореГрддрд┐ рд▓реАрдХ рддрдп рдХреА, рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рдиреЛрдб 11.10 рдкрд░ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдиреЛрдб 12.3.1 рдкрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ

agent-base рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ PR рдЦреБрд▓рд╛ рд╣реИ: https://github.com/TooTallNate/node-agent-base/pull/25

рд╣рдо рдпрд╛ рддреЛ рдЗрд╕реЗ рдХрд╛рдВрдЯрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╛рд░реНрди рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред

рдереЛрдбрд╝рд╛ рдСрдлрдЯреЙрдкрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд▓реАрдХ рдХрд╛ рдХрд╛рд░рдг рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣реИрдВрдбрд▓рд░.рдЯреНрд╕ рдореЗрдВ рдХреЛрдИ рдбреЛрдореЗрди рдХреНрд▓реАрдирдЕрдк рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдбреЛрдореЗрди рдХреНрд░рд┐рдПрдЯ рд╣реИ?
рдордзреНрдпрдо рд▓реЗрдЦ рдпрд╛ рдПрд╕рдУ рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд░рд┐рдореВрд╡рд▓рд░ рдФрд░ рдбреЛрдореЗрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рдЬрд╡рд╛рдм рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдЕрджреНрдпрддрди: рдЕрдм рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣реИрдВрдбрд▓рд░ рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдд: рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ domain.exit рдХрд╣рддрд╛ рд╣реИред рдлрд┐рд░ рднреА рд╢реНрд░реЛрддрд╛рдУрдВ / рдЕрдореАрд░реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдлрд░реНрдХ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ Node 12.4.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рдмреБрд░рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╕реЗрдВрдЯреНрд░реА рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рдкреНрд░рддреАрдд рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдВ рдХреБрдЫ рдиреЛрдб-рдХреНрд▓рд┐рдирд┐рдХ рдбреЙрдХреНрдЯрд░ рд░рди рдХрд░рддреЗ рд╣реИрдВ, - 90 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ-autocannon рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рдеред

рдпрд╣ рдХреЗрд╡рд▓ рд╕рдЪ рдореЗрдВ рд▓реАрдХ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдЬрдЧрд╣ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд░рди рдореЗрдВ GC troughs рдХреА рдмреЛрддрд▓реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рд╕реНрддрд░ (65-70mb) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рд╕рд╛рде рджреМрдбрд╝ рдкреНрд░рддреНрдпреЗрдХ GC рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 5mb рдкрд░ рдЪрдврд╝рддреА рд╣реБрдИ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред

@ tstirrat15 рдпрд╣ рдлрд┐рдХреНрд╕ рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЗрд╕реАрд▓рд┐рдП рдЖрдк рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рддреЛ рдХреНрдпрд╛ рдЖрдк рдирд╡реАрдирддрдо рдорд╛рд╕реНрдЯрд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ tstirrat15 5.4.2 рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ :)

рдпрд╣рд╛рдБ v5.4.2 рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд░рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдЕрд╕реНрдерд┐рд░ рд▓рдЧрддрд╛ рд╣реИ ...

рдЬреАрд╕реА рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдХ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдХреЛ рдмреЗрд╕рд▓рд╛рдЗрди рдкрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рд╡реГрджреНрдзрд┐ рдШрдЯрдирд╛рдУрдВ рдФрд░ рдШрдЯрдирд╛ рдХрддрд╛рд░ рд╕реЗ рдПрдХрддреНрд░рд┐рдд рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ 100 рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдкрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝реЗрдЧрд╛ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо ~ 15-30min рдбрдВрдк рдХреА рддрд░рд╣ рджреЗрдЦ рд╕рдХреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреАрдХ рдореЗрдореЛрд░реА рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рд░реБрдХрддреА рд╣реИред

рд╣рдореНрдо ... рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдкреАрдЖрд░ рдХреЛ рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдВрдбрд▓рд┐рдВрдЧ рд╕рдВрддрд░реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ - рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдРрдк рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдмрд╛рд╣реНрдп рдореЗрдВ @ рд╕рдВрддрд░реА / рдиреЛрдб рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╣рдорд╛рд░реА рдореЗрдореЛрд░реА рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИ рд╣реИред рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ?

@tpbowden рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рд╣реИрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИред рдореИрдВ рдПрд╕рдбреАрдХреЗ v5.15.0 рдФрд░ рдиреЛрдб v12.3.1 рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛, рджреЛрдиреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред

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

рдпрд╣ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдмрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред рдореЗрд░рд╛ рдЬрдВрдЧрд▓реА рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдорд░ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рд╕рдВрднрд╡рддрдГ рдбреЛрдореЗрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдмреИрдХ рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рд╕реЗ scope.addEventProcessor рдХрд╛ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдЕрдЪреНрдЫреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рднреА razzle.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╡реЗрдмрдкреИрдХ / рдЯрд╕рд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдп рд╣реИред

рдпрд╣ рд╕рдВрддрд░реА рдХреА рддрд░рдл рд╕реЗ рдмрдЧ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ рдФрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ рдЬрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рдФрд░ рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рдЕрджреНрдпрддрди рд░рдЦрд╛ рдЬрд╛рдПред

рдпрд╣ рд╕рдВрддрд░реА рдХреА рддрд░рдл рд╕реЗ рдмрдЧ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ рдФрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ рдЬрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рдФрд░ рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рдЕрджреНрдпрддрди рд░рдЦрд╛ рдЬрд╛рдПред

рд╣рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд░рд╣реЗрдВ, рдзрдиреНрдпрд╡рд╛рдж!

@kamilogorek рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ _eventProcessors рдПрд░реЗ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╕реНрдХреЛрдк рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рдЕрдВрджрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдвреВрдБрдв рд╕рдХрддрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЕрдиреБрд░реЛрдз рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдПрдХ рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЙрд▓рдмреИрдХ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдХрднреА рднреА рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдмрдЧ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

Screen Shot 2020-03-23 at 15 49 03

рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдФрд░ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдПрдХ рд╣реА рдЧреБрдВрдЬрд╛рдЗрд╢ рдЙрджрд╛рд╣рд░рдг ЁЯдФ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ

рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдФрд░ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдпрд╣ рд╕рд╣реА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, scope рдХреЛ рд╣рд░ рдирдП domain рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рджреЗрдЦреЗрдВ рдпрд╣ рдХреЙрд▓ рд╕реНрдЯреИрдХ:

https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/node/nrc/handlers.ts#L319 -L328

https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/hub/nrc/hub.ts#L442 -L457

https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/hub/nrc/hub.ts#L463 -L488

https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/hub/nrc/hub.ts#L479

рд╣рд╛! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдорд┐рд▓рд╛ред

рд╣рдо рдЧрддреНрдпрд╛рддреНрдордХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/hub/nrc/hub.ts#L465-L468

рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдбрд╛рдпрдиреЗрдорд┐рдХрдкреНрд░реЗрдпрд░ рдХреЛрдб рдореЗрдВ рдХрджрдо рд░рдЦрддрд╛ рд╣реВрдВ:
https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/utils/mrc/misc.ts#L28-L31

require mod f рдкрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ

рддреЛ рдпрд╣ catch getHubFromActiveDomain рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп getHubFromCarrier() !

рдЪреВрдВрдХрд┐ рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдк _everyting_ рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ mod рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рдХреБрдЫ рдзрд╛рд░рдгрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдЯреВрдЯ рдЧрдИ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? ЁЯдФ

рд░реЗрдХреИрдк рдХрд░реЗрдВ

рд╣рдо рдЧрддреНрдпрд╛рддреНрдордХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
Screen Shot 2020-03-24 at 12 05 04

mod.require рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ:
Screen Shot 2020-03-24 at 12 20 01

рдореЙрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпрд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
Screen Shot 2020-03-24 at 12 20 38

рд╣рдо getHubFromCarrier рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
Screen Shot 2020-03-24 at 12 21 22

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╣рдм_рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реАрдзреЗ рд╣рдм рдореЙрдбреНрдпреВрд▓ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреИрдЪ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ dynamicRequire рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ import domain from 'domain'; рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ ... рдпрд╣ рдЕрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдФрд░ рдХреЛрдИ рд▓реАрдХ рдирд╣реАрдВ! ЁЯОЙ

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

рдореИрдВрдиреЗ рднреА рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:

const domain = dynamicRequire(module, 'domain');

рд╕рд╛рде рд╕реЗ:

const domain = require('domain');

рдФрд░ рдпрд╣ рдареАрдХ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк рдЙрди рджреЛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реЗ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

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