@sentry/browser
^5.11.0@sentry/node
^5.11.0node
v12.7.0рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдиреЗрдХреНрд╕реНрдЯрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдиреЗрдХреНрд╕реНрдЯрдЬ рдХрдореНрдпреБрдирд┐рдЯреА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рд╣реИ ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдРрдк рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ:
[ error ] ./node_modules/@sentry/node/esm/integrations/console.js
Module not found: Can't resolve 'console' in '/.../node_modules/@sentry/node/esm/integrations'
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдРрдк рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдФрд░ рдЕрдкрдирд╛ рдпрд╛рд░реНрди рд▓реЙрдХ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ! рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ!
рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВ рд╕рдВрддрд░реА рдХреЛ рдЗрд╕ рддрд░рд╣ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
import * as Sentry from '@sentry/node';
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ @zeit/next-source-maps
рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдмрджрд▓ рджрд┐рдпрд╛:
@zeit/next-source-maps": "0.0.4-canary.1
ред
рддрдм рдореИрдВ рд╕рд╛рдл node_modules
рдФрд░ рд╣рдЯрд╛рдпрд╛ yarn.lock
рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг! рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ!
@afsanefda рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА node_modules
yarn.lock
node_modules
рд╣рдЯрд╛рдиреЗ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ @zeit/next-source-maps": "0.0.4-canary.1
рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ ... рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреЛрдИ рдЕрдиреНрдп рдХрд╛рдо рдХрд┐рдпрд╛ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рдерд╛?
рдЬреЛрдбрд╝реЗрдВ:
if (!options.isServer) {
config.resolve.alias['@sentry/node'] = '@sentry/browser'
}
next.config.js
рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?
рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?
рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЕрд╕рдВрдЧрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдХреГрдкрдпрд╛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рд╕реБрдЭрд╛рд╡ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред
@ 5tormTrooper рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрд╡рд╢реНрдпрдХ рдХрдерди рдореЗрдВ () рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЧрдпрд╛:
const withSourceMaps = require('@zeit/next-source-maps')()
рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
@ рд╕рдВрддрд░реА/рдиреЛрдб^5.11.0
рдХреЛрдИ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
@philkeys рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреЛрд╢рд┐рд╢ рдХреА рдереАред рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВред
Next.js рдХреЛ ' 9.1.6 ' рд╕реЗ ' 9.3.5 ' рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХреБрдЫ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ ' @ рд╕рдВрддрд░реА/рдиреЛрдб ' рдХрд┐рд╕реА рддрд░рд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдВрдбрд▓ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд▓рд╛рдЗрди рдиреЗ рдЕрдЪрд╛рдирдХ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред
if (!isServer) {
config.resolve.alias['@sentry/node'] = '@sentry/browser';
}
рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рддреЗ рд╣реИрдВ? рдореИрдВрдиреЗ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдРрд╕реА рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рд╕рдВрджрд░реНрднрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рддрд░рд╣ рджреЗрд╡ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдмрджрд▓рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдпрджрд┐ рдореБрдЭреЗ рдХреЛрдИ рдареЛрд╕ рд╕рдорд╕реНрдпрд╛ рдФрд░ рд░реЗрдкреНрд░реЛ рдХреЗрд╕ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред
рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП @kamilogorek thxред рдореБрдЭреЗ рдХрд┐рд╕реА рдРрд╕реЗ рдореБрджреНрджреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрджрд░реНрдн рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдУрдкреА рдиреЗ @zeit/next-source-maps
рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ (рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)
рдореИрдВ рдПрдХ рдкреБрдирд░реБрддреНрдкрд╛рджрди рд░реЗрдкреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рд╕рдВрддрд░реА рдЯреЛрдХрди рдХреЗ рд╕рд╛рде .env
рдлрд╝рд╛рдЗрд▓ рдкреНрд░рджрд╛рди рдХрд░рдиреА рд╣реЛрдЧреАред
рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди?
рдореИрдВ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреА рдмрд╛рд░реАрдХреА рд╕реЗ рдирдХрд▓ рдХрд░рдХреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдПрд╕рдПрд╕рдЬреА ( next export
) рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдПрд╕рдПрд╕рдЬреА рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░-рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╡реЗрдмрдкреИрдХ рдЙрдкрдирд╛рдо (+ рд╕рдм рдХреБрдЫ рд╕рдВрджрд░реНрднрд┐рдд @sentry/node
) рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ . рдЕрдм рд╣рдо рдХреЗрд╡рд▓ @sentry/browser
ред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд▓рд╛рдЗрди рд╣реИ:
if (!isServer) { config.resolve.alias['@sentry/node'] = '@sentry/browser'; }
рдлрд┐рд░ рдЖрдкрдХреЛ @sentry/browser
рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рддреНрд░реБрдЯрд┐ рдереЛрдбрд╝реА рднреНрд░рд╛рдордХ рд╣реИ ...
рдореЗрд░реЗ next.config.js рдореЗрдВ, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдлрдПрд╕: "рдЦрд╛рд▓реА" рд╡рд┐рдзрд┐ рдХрд░ рд░рд╣рд╛ рдерд╛, рд╕рд╛рде рд╣реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕рдВрддрд░реА/рдиреЛрдб рдХреЛ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛! isServer рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдХрдВрд╕реЛрд▓ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рд╡рд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рд▓реЙрдЧ рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рдирд╣реАрдВ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рдирд╛ (withSourceMaps, withSass, withOptimizedImages) рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдЬреЛрдбрд╝рдирд╛, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореЗрд░рд╛ рдмреЗрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрд╛рд╣рд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЪреЗрдирд┐рдВрдЧ рдХреА рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ (рд╡реЗ рд╡рд╛рдкрд╕ рдЖрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ config рд╕реНрд╡рдпрдВ рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрднреА рднреА рдмрдВрдж рд╣реИ):
module.exports = withBundleAnalyzer(
withSourceMaps(
withSass(
withOptimizedImages(baseConfig)
)
)
рддреЛ рдЖрдкрдХрд╛ fs: "рдЦрд╛рд▓реА" рдХрд╛ рдХрднреА рд╕рдореНрдорд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╡рд╣ рдпрд╣ рдерд╛ рдХрд┐ рдЕрдЧрд▓рд╛-рд▓рд┐рдЦреЗрдВ-рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдирд┐рд░реНрдпрд╛рдд рдХреЛ рдмрджрд▓ рджреЗрдВ
module.exports = withPlugins(
[
[withOptimizedImages],
[withSass],
[withSourceMaps],
[withBundleAnalyzer],
],
baseConfig
);
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд▓рд╛рдЗрди рд╣реИ:
if (!isServer) { config.resolve.alias['@sentry/node'] = '@sentry/browser'; }
рдлрд┐рд░ рдЖрдкрдХреЛ
@sentry/browser
рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рддреНрд░реБрдЯрд┐ рдереЛрдбрд╝реА рднреНрд░рд╛рдордХ рд╣реИ ...
@vpontis , рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВ Vue.js рдХреЗ рд╕рд╛рде рд╕рдВрддрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдЗрд╕реЗ vue.config.js . рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ
chainWebpack: (config) => {
config.resolve.alias['@sentry/node'] = '@sentry/browser'
}
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ рддреЛ рдореИрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдпрджрд┐ рдЖрдк рдиреЗрдХреНрд╕реНрдЯ-рд╕реЛрд░реНрд╕-рдореИрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ @zeit/next-source-maps
рдкреИрдХреЗрдЬ 0.0.4-canary.1
рдореБрдЭреЗ next.config.js рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВ next-source-maps
рд╕рд╛рде рд╕рдВрддрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИред
if (process.env.NEXT_PUBLIC_SENTRY_DSN) {
Sentry.init({
enabled: true,
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
});
}
рдХреНрдпрд╛ рдореИрдВ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИ рдореЗрд░реА _app.js
рдХреЗ рдмрд╛рдж рдореИрдВ рд╕реНрдерд╛рдкрд┐рдд @sentry/node @sentry/browser @sentry/react
рдФрд░ рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ @zeit/next-source-maps" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рддреЛ рдореИрдВ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛": "0.0.4-рдХреИрдирд░реА.1 рднреА!
рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреНрд▓рдЧрдЗрди рд╣рдЯрд╛ рджрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдХреЛрдб рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рдХреЛ рдЕрдЧрд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рд╛:
const { dev } = options
if (!dev) {
config.devtool = options.devtool || 'source-map'
for (const plugin of config.plugins) {
if (plugin.constructor.name === 'UglifyJsPlugin') {
plugin.options.sourceMap = true
break
}
}
if (config.optimization && config.optimization.minimizer) {
for (const plugin of config.optimization.minimizer) {
if (plugin.constructor.name === 'TerserPlugin') {
plugin.options.sourceMap = true
break
}
}
}
}
рдпрд╣ рд╕рдВрддрд░реА рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@ 5tormTrooper рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрд╡рд╢реНрдпрдХ рдХрдерди рдореЗрдВ () рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЧрдпрд╛:
const withSourceMaps = require('@zeit/next-source-maps')()