Sentry-javascript: index.js에 λŒ€ν•œ μ†ŒμŠ€ μ½”λ“œλ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 12μ›” 06일  Β·  28μ½”λ©˜νŠΈ  Β·  좜처: getsentry/sentry-javascript

νŒ¨ν‚€μ§€ + 버전

  • [ ] @sentry/browser
  • [x] @sentry/node
  • [ ] raven-js
  • [ ] raven-node _(λ…Έλ“œμš© 레이븐)_
  • [ ] λ‹€λ₯Έ:

버전:

4.4.1

μ„€λͺ…

λ‹€μŒ 이벀트 캑처 μ½”λ“œλŠ” 이벀트λ₯Ό ꡬ문 λΆ„μ„ν•˜λŠ” λ™μ•ˆ Sentryμ—μ„œ 였λ₯˜λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. 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μ—μ„œ μ΄λ²€νŠΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
Sentry Event Screenshot

Needs Information

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ’‹μ•„, 이것은 λ‚˜μ—κ²Œ UX λ²„κ·Έμ²˜λŸΌ 보인닀. 제 μƒκ°μ—λŠ” (적어도 Node.js ν”„λ‘œμ νŠΈμ˜ 경우) 경고일 뿐이고 Source code was not found μ•„λ‹ˆλΌ Source maps were not found 와 κ°™μ•„μ•Ό ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 1λ…„ μ΄μƒμ˜ 기둝이 μžˆλŠ” 문제λ₯Ό 방지할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ;)
μ›ν•œλ‹€λ©΄ 이 문제λ₯Ό ν”„λ‘ νŠΈμ—”λ“œ/λ””μŠ€ν”Œλ ˆμ΄ λΆ€λΆ„μ—μ„œ μΌν•˜λŠ” λͺ¨λ“  μ‚¬λžŒμ„ μœ„ν•œ λ³΄κ³ μ„œλ‘œ λ‹€μ‹œ μ—΄κ±°λ‚˜ κ·Έλƒ₯ λ‹«νžŒ μƒνƒœλ‘œ 두고 이 μ˜€ν•΄λ₯Ό 보고할 수 μžˆμŠ΅λ‹ˆλ‹€. λ§ˆμΉ¨λ‚΄ 이것을 λͺ…ν™•νžˆ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

λͺ¨λ“  28 λŒ“κΈ€

μ΄λ²€νŠΈμ— λŒ€ν•œ 직접 링크λ₯Ό κ²Œμ‹œν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

(이전에 λ§ˆμŠ€ν‚Ήν•œ μŠ€νƒ 좔적 μŠ€ν¬λ¦°μƒ·μ—μ„œλ„ 일뢀 경둜λ₯Ό λ†“μ³€μŠ΅λ‹ˆλ‹€ πŸ˜‚)

Sentry.captureException 직접 μ‚¬μš©ν•˜μ§€ μ•Šκ³  μžμ‹ λ§Œμ˜ 이벀트λ₯Ό λ§Œλ“€κ³  싢은 νŠΉλ³„ν•œ μ΄μœ κ°€ μžˆμŠ΅λ‹ˆκΉŒ?

예, 이것은 μ΄λ²€νŠΈμž…λ‹ˆλ‹€: https://sentry.io/share/issue/e2c8d20b66d2406cb32c540d87654b4a/ (우리 dsn을 κ²Œμ‹œν•˜μ§€ μ•Šλ„λ‘ μ•½κ°„ μˆ˜μ •λ¨)

Sentry.captureEvent() μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. hapi 라우트 ν•Έλ“€λŸ¬(μš”μ²­ 데이터가 풍뢀함)μ—μ„œ λ°œμƒν•˜λŠ” 였λ₯˜ 이벀트λ₯Ό μΊ‘μ²˜ν•˜λŠ” hapi ν”ŒλŸ¬κ·ΈμΈμ„ μœ μ§€ κ΄€λ¦¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ°Έμ‘°: hapi -sentry ./index.js#L41-L67

@guischdi 이 였λ₯˜κ°€ λ°œμƒν•˜λŠ” μ΄μœ λŠ” 둜컬 파일 κ²½λ‘œκ°€ 원격 μ„œλ²„μ— 도달할 수 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.
SentryλŠ” /something/local/src/app.js λ₯Ό 가져와 ν•΄κ²°ν•˜κ³  더 λ‚˜μ€ 였λ₯˜ 맀핑을 μ œκ³΅ν•˜κΈ° μœ„ν•΄ μ†ŒμŠ€ μ½”λ“œλ₯Ό 읽으렀고 ν•©λ‹ˆλ‹€(μ†ŒμŠ€ 맡 파일과 λ™μΌν•œ λ°©μ‹μœΌλ‘œ μž‘λ™ν•¨).

νŒŒμΌμ„ μ—…λ‘œλ“œν•˜λ €λ©΄ CLI https://docs.sentry.io/cli/ λ˜λŠ” Webpack ν”ŒλŸ¬κ·ΈμΈ https://github.com/getsentry/sentry-webpack-plugin을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

여기에 μ†ŒμŠ€ 맡에 λŒ€ν•œ λͺ‡ 가지 였래된 λ¬Έμ„œκ°€ μžˆμ§€λ§Œ κ°œλ…μ€ μƒˆ SDK 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 μ „ν™”λ₯Ό
  • Sentry의 λ™μΌν•œ λ¦΄λ¦¬μŠ€μ— μ†ŒμŠ€ μ—…λ‘œλ“œ
  • λ°œκ²¬ν•œ 였λ₯˜μ˜ ν”„λ ˆμž„μ΄ μ—…λ‘œλ“œ 파일의 ν”„λ ˆμž„κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

그것이 당신을 μœ„ν•΄ λͺ‡ 가지λ₯Ό μ§€μš°κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€. 도움이 더 ν•„μš”ν•˜λ©΄ 무엇이든 자유둭게 λ¬Όμ–΄λ³΄μ„Έμš”.

μ•ˆλ…•ν•˜μ„Έμš” @kamilogorek
μžμ„Έν•œ λ‹΅λ³€ κ°μ‚¬ν•©λ‹ˆλ‹€.

λ‚΄κ°€ μ˜¬λ°”λ₯΄κ²Œ μ΄ν•΄ν–ˆμŠ΅λ‹ˆκΉŒ? Sentry에 Node.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μŠ€νƒ 좔적을 ν‘œμ‹œν•˜λŠ” 일반적인 방법은 RewriteFrames 톡합을 톡해 λ˜λŠ” μˆ˜λ™μœΌλ‘œ 각 릴리슀의 νŒŒμΌμ„ μ—…λ‘œλ“œν•˜λŠ” κ²ƒμž…λ‹ˆκΉŒ? κ·Έλ ‡λ‹€λ©΄ captureException /catch-all에 λŒ€ν•œ μŠ€νƒ 좔적이 ν‘œμ‹œλ˜κ³  'μ†ŒμŠ€ μ½”λ“œλ₯Ό 찾을 수 μ—†μŒ' 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

node_modules libμ—μ„œ 였λ₯˜λ₯Ό λ˜μ§€λŠ” 방법을 ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€. libμ—μ„œλ„ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν¬ν•¨ν•˜μ—¬ 였λ₯˜κ°€ μ˜¬λ°”λ₯΄κ²Œ λ³΄κ³ λ©λ‹ˆλ‹€. https://sentry.io/share/issue/2b95ecb13ce24227b2184b2561e4f6e3/ μ°Έμ‘°

μ™œ ν•¨κ»˜μ΄ μž‘μ—…μ„ μˆ˜ν–‰ captureException 와 ν•¨κ»˜ μ‹€νŒ¨ captureEvent ?

Sentry Screenshot

@guischdi 두 μ΄λ²€νŠΈμ— λŒ€ν•œ 전체 링크λ₯Ό

λ˜ν•œ μ•žμœΌλ‘œ 3μ£Ό λ™μ•ˆ 사무싀을 λΉ„μš°κ²Œ λ˜λ―€λ‘œ λŒμ•„μ˜¬ λ•Œ λ‹€μ‹œ 이 μ—…λ¬΄λ‘œ λŒμ•„κ°€λ„λ‘ λ…Έλ ₯ν•˜κ² μŠ΅λ‹ˆλ‹€.

@kamilogorek

  • 이 λŠ” IS captureEvent 링크
  • 이 λŠ” IS captureException 링크

λ΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

@kamilogorek λͺ¨λ“  λ¦΄λ¦¬μŠ€μ— λŒ€ν•΄ 전체 node_modules 폴더λ₯Ό μ—…λ‘œλ“œν•΄μ•Ό ν•œλ‹€λŠ” λœ»μΈκ°€μš”? μ™œ @sentry/node μ„œλ²„μ—μ„œ μ‹€ν–‰ 쀑이고 이 λͺ¨λ“  μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ”λ° 였λ₯˜ λ³΄κ³ μ„œμ™€ ν•¨κ»˜ ν•„μš”ν•œ νŒŒμΌμ„ μ—…λ‘œλ“œν•  수 μ—†μŠ΅λ‹ˆκΉŒ?

ν”„λ ˆμž„ 톡합을 μ„€μ •ν•˜κ³  기본적으둜 전체 node_modules μ—…λ‘œλ“œν•˜λ©΄ 이 λ¬Έμ œκ°€ 해결됨을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ„ˆλ¬΄ λ§Žμ€ node_modules νŒŒμΌμ„ μ—…λ‘œλ“œν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λŠ” 맀우 λŠλ¦½λ‹ˆλ‹€.

λ‚˜λŠ” 이것에 λŒ€ν•œ 해결책이 λ‹€μŒ 쀑 ν•˜λ‚˜λΌκ³  μƒκ°ν•©λ‹ˆλ‹€.

  1. λ³΄μ΄ˆκ°€ 전체 릴리슀의 .tar μ—…λ‘œλ“œ ν—ˆμš©
  2. λ…Έλ“œ ν”„λ‘œμ νŠΈλ₯Ό 단일 .js 및 .map μ»΄νŒŒμΌν•˜κ³  이 두 파일만 배포 및 μ—…λ‘œλ“œν•©λ‹ˆλ‹€.

λ˜ν•œ node_modules npm νŒ¨ν‚€μ§€μ— μ—†λŠ” 원본 .ts νŒŒμΌμ„ μ°Έμ‘°ν•˜λŠ” μ†ŒμŠ€ 맡에 λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. - https://github.com/prisma/graphql-middleware/issues/159

@kamilogorek 이 λ¬Έμ œμ— λŒ€ν•œ μ†Œμ‹μ΄ μžˆμŠ΅λ‹ˆκΉŒ?

ν”„λ ˆμž„μ„ λ‹€μ‹œ μ“°λŠ” 것이 우리λ₯Ό μœ„ν•œ μ†”λ£¨μ…˜μ΄λΌλŠ” 것도 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

우리의 κ²½μš°λŠ” μ•½κ°„ λ‹€λ¦…λ‹ˆλ‹€. μ†ŒμŠ€λ§΅μ΄ μž‘λ™ν•˜λ„λ‘ ν•˜λ €κ³  ν–ˆμ§€λ§Œ μΆ•μ†Œλœ νŒŒμΌμ€ 항상 Sentryμ—μ„œ μ‚¬μš©ν•˜λŠ” νŒŒμΌμ΄μ—ˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή 릴리슀의 경우 μΆ•μ†Œλœ 파일과 κ΄€λ ¨ μ†ŒμŠ€λ§΅μ„ μ—…λ‘œλ“œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. Sentryκ°€ μ†ŒμŠ€λ§΅μ„ 찾지 λͺ»ν•˜κ³  μΆ•μ†Œλœ 파일둜 κΈ°λ³Έ μ„€μ •λ˜μ–΄ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€(μ΄λŠ” μ—¬μ „νžˆ μ†ŒμŠ€λ§΅κ³Ό λ™μΌν•œ κ²½λ‘œμ—μ„œ ν˜ΈμŠ€νŒ…λ¨).

Sentry의 μ΄ˆκΈ°ν™”μ— λŒ€ν•œ 톡합 킀에 new Integrations.RewriteFrames() λ₯Ό μΆ”κ°€ν–ˆμœΌλ©° λͺ¨λ“  μƒˆλ‘œμš΄ λ¬Έμ œμ— λŒ€ν•΄ μ†ŒμŠ€λ§΅μ„ μ„ νƒν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

RewriteFrames 톡합 및 node_modules μ—…λ‘œλ“œκ°€ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ¨Όμ €( @mieszko4κ°€ 이미 μ–ΈκΈ‰ν–ˆλ“―μ΄), λ„ˆλ¬΄ λ§Žμ€ νŒŒμΌμ„ μ—…λ‘œλ“œν•˜λŠ” 것은 μƒλ‹Ήνžˆ μ„±κ°€μ‹  μΌμž…λ‹ˆλ‹€. κ²Œλ‹€κ°€ λ‚˜μ˜ 초기 λ°œκ²¬μ€,

captureException /catch-all에 λŒ€ν•œ μŠ€νƒ 좔적이 ν‘œμ‹œλ˜κ³  'μ†ŒμŠ€ μ½”λ“œλ₯Ό 찾을 수 μ—†μŒ' 였λ₯˜κ°€ νŠΈλ¦¬κ±°λ˜μ§€ μ•ŠμŒ

λ”°λΌμ„œ λ‹€μŒ 질문이 μ—΄λ € μžˆμŠ΅λ‹ˆλ‹€.

μ™œ ν•¨κ»˜μ΄ μž‘μ—…μ„ μˆ˜ν–‰ captureException 와 ν•¨κ»˜ μ‹€νŒ¨ captureEvent ?

λ˜λŠ” 더 μ •ν™•ν•˜κ²Œ: captureException λ₯Ό 톡해 문제 없이 였λ₯˜λ₯Ό μΊ‘μ²˜ν•  수 μžˆμ§€λ§Œ captureEvent λ₯Ό 톡해 μΊ‘μ²˜ν•˜λŠ” 경우 λͺ¨λ“  파일의 μ—…λ‘œλ“œ( RewriteFrames 톡합 λ˜λŠ” μˆ˜λ™)κ°€ ν•„μš”ν•©λ‹ˆλ‹€. "μ†ŒμŠ€ μ½”λ“œλ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€"-였λ₯˜. 이것은 λ²„κ·Έμž…λ‹ˆκΉŒ μ•„λ‹ˆλ©΄ μ˜λ„λœ κ²ƒμž…λ‹ˆκΉŒ, @kamilogorek?

@guischdi 닡변이

@kamilogorek
예, 우리의 λ¬Έμ œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

@guischdi ν™•μΈλ§Œ index.js νŒŒμΌμΈκ°€μš”? κ°€λŠ₯ν•˜λ‹€λ©΄ 이 파일의 λ‚΄μš©μ„ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@kamilogorek
예, μ›μ‹œ nodeJSμž…λ‹ˆλ‹€. μœ„μ—μ„œ λ§ν¬ν•œ 두 번째 문제λ₯Ό μ‚΄νŽ΄λ³΄μ‹­μ‹œμ˜€. 이미 index.js 의 13행이 λͺ¨λ‘ ν‘œμ‹œλ©λ‹ˆλ‹€.

@guischdi μš°λ¦¬λŠ” μ™œ μ΄λ ‡κ²Œ λ™μž‘ν•˜λŠ”μ§€ μ‘°μ‚¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€(같은 URL을 가진 2개의 연속 ν”„λ ˆμž„μ΄ 이λ₯Ό νŠΈλ¦¬κ±°ν•¨). κ·Έλ™μ•ˆ ν”„λ‘œμ νŠΈ μ„€μ •μ—μ„œ "JavaScript μ†ŒμŠ€ κ°€μ Έμ˜€κΈ° μ‚¬μš©"을 끌 수 μžˆμŠ΅λ‹ˆλ‹€. https://sentry.io/settings/kamil-ogorek/projects/testing-project/
λ…Έλ“œ μ•±μ΄λ―€λ‘œ κ·Έλ ‡κ²Œ ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

@kamilogorek μ•Œκ² μŠ΅λ‹ˆλ‹€ . "JavaScript μ†ŒμŠ€ κ°€μ Έμ˜€κΈ° μ‚¬μš©" 섀정을 끄고 λ‹€λ₯Έ 였λ₯˜λ₯Ό λ°œμƒμ‹œμΌ°μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ—¬μ „νžˆ 1 error encountered while processing this event: [...] Source code was not found ( 이 문제 μ°Έμ‘°)

μ΄μƒν•˜κ²Œλ„ μ €μ—κ²ŒλŠ” 잘 λ§žμŠ΅λ‹ˆλ‹€. μ–΄μ¨Œλ“ , μš°λ¦¬λŠ” 그것이 λ°œμƒν•˜λŠ” 이유λ₯Ό μ‘°μ‚¬ν•˜λ €κ³  λ…Έλ ₯ν•  κ²ƒμž…λ‹ˆλ‹€. 비둝 그것이 μ–Έμ œ λ°œμƒν•˜λŠ”μ§€ μž₯λ‹΄ν•  μˆ˜λŠ” μ—†μ§€λ§Œ, μ–΄λ–€ 것이 μž‘λ™ν•˜λŠ” 것을 λ°©ν•΄ν•˜λŠ” μ£Όμš” λ¬Έμ œκ°€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 계속 μ•Œλ €λ“œλ¦½λ‹ˆλ‹€!

@kamilogorek 이것에 λŒ€ν•œ μ†Œμ‹μ΄ μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜μ—κ²Œ 문제 λ³΄κΈ°λŠ” μ†ŒμŠ€ μ½”λ“œμ— λͺ‡ 개의 파일이 λˆ„λ½λœ κ²ƒμœΌλ‘œ λ³΄κ³ ν•˜μ§€λ§Œ λͺ¨λ‘ μ‘΄μž¬ν•˜κ³  μŠ€νƒ 좔적 μ•„λž˜μ—μ„œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

Sentryλ₯Ό 자체 ν˜ΈμŠ€νŒ…ν•˜κ³  @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 영ν–₯을 λ°›λŠ” μ΄λ²€νŠΈμ— λŒ€ν•œ 링크λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

"μ†ŒμŠ€ μ½”λ“œλ₯Ό 찾을 수 μ—†μŒ" 였λ₯˜κ°€ λ°œμƒν•˜λ”λΌλ„ μ†ŒμŠ€ μ»¨ν…μŠ€νŠΈ(즉, 문제의 쀄 μœ„μ™€ μ•„λž˜μ— μžˆλŠ” μ½”λ“œ)λ₯Ό λ³Ό 수 μžˆλŠ” μ΄μœ λŠ” SDKμ—μ„œ 이벀트λ₯Ό 보내기 전에 μŠ€νƒ 좔적 처리의 μΌλΆ€λ‘œ 이 정보 λ₯Ό

ν•˜μ§€λ§Œ 이것은 우리 츑의 λ²„κ·Έμž…λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ μš°λ¦¬λŠ” μ‹€μ œλ‘œ λͺ¨λ“  λ¦΄λ¦¬μŠ€μ—μ„œ node_modules λ₯Ό μ—…λ‘œλ“œν•  κ²ƒμœΌλ‘œ κΈ°λŒ€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€(λ…Έλ“œ μ•±μ˜ 경우, λΈŒλΌμš°μ € μ•±μ˜ 경우 μ–΄μ¨Œλ“  λ²ˆλ“€/μΆ•μ†Œν•  κ°€λŠ₯성이 있음). https://github.com/getsentry/sentry/pull/17538μ—μ„œ μˆ˜μ •ν•΄μ•Ό ν•˜λ©° λͺ‡ μ‹œκ°„ 내에 λ°°ν¬λ©λ‹ˆλ‹€.

λ¬Έμ œκ°€ ν•΄κ²°λ˜λ©΄ 여기에 λŒ“κΈ€μ„ 단 μ‚¬λžŒμ΄ 있으면 μ—¬μ „νžˆ 문제/질문과 그것이 무엇인지 μ•Œλ €μ£Όμ‹€ 수 μžˆμŠ΅λ‹ˆκΉŒ? ν•„μš”ν•œ 경우 이λ₯Ό λ‹€μ‹œ μ—΄ 수 μžˆμ–΄ κΈ°μ©λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @lobsterkatie
λ‹€μŒ μŠ€λ‹ˆνŽ«(npm의 ν˜„μž¬ READMEμ—μ„œ 제거됨)으둜 λ‹€μ‹œ ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

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 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
μ–΄μ œ λ„μž…ν•œ μˆ˜μ • 사항이 이미 λ°°ν¬λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?

λ˜ν•œ @sentry/node의 ν˜„μž¬ v4.xx 버전(v4.6.6) 및 μ΅œμ‹  릴리슀(v5.14.0)둜 ν…ŒμŠ€νŠΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

@guischdi μ•„ν‹°νŒ©νŠΈλ₯Ό μ—…λ‘œλ“œν•˜μ§€ μ•Šμ•˜κ±°λ‚˜ ꡬ성에 릴리슀λ₯Ό ν¬ν•¨ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λ¨Όμ € λ¬Έμ„œλ₯Ό λ”°λ₯΄μ‹­μ‹œμ˜€: https://docs.sentry.io/platforms/node/sourcemaps/

@kamilogorek

SDKμ—μ„œ 이벀트λ₯Ό 보내기 전에 μŠ€νƒ 좔적 처리의 μΌλΆ€λ‘œ 이 정보λ₯Ό κΈ°λ‘ν•©λ‹ˆλ‹€. ν•΄λ‹Ή 정보λ₯Ό μž…λ ₯ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” μ„œλ²„μ—μ„œλ„ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” μ‹€μ œλ‘œ λͺ¨λ“  λ¦΄λ¦¬μŠ€μ™€ ν•¨κ»˜ node_modulesλ₯Ό μ—…λ‘œλ“œν•  κ²ƒμœΌλ‘œ κΈ°λŒ€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 우리 츑의 λ²„κ·Έμž…λ‹ˆλ‹€.

κ·Έ μ‹œμ μ—μ„œ @lobsterkatieλ₯Ό 이해
μ»¨ν…μŠ€νŠΈκ°€ μ œλŒ€λ‘œ μ œκ³΅λ˜μ—ˆμ§€λ§Œ 였λ₯˜κ°€ ν‘œμ‹œλ˜λŠ” 것이 μœ μΌν•œ 문제라고 μƒκ°ν•©λ‹ˆλ‹€. μ„œλ²„κ°€ λ‚΄ μͺ½μ—μ„œ μΆ”κ°€ μ—…λ‘œλ“œκ°€ ν•„μš”ν•˜μ§€ μ•Šλ‹€λŠ” 것을 μΈμ‹ν•˜μ§€ λͺ»ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. (λ‚΄κ°€ μ œλŒ€λ‘œ μ΄ν•΄ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ

@guischdi μ°Ύκ³  μžˆλŠ” νŒŒμΌμ€ node_modulesκ°€ μ•„λ‹ˆλΌ μ•±μ—μ„œ κ°€μ Έμ˜¨ κ²ƒμ΄λ―€λ‘œ λ‚΄κ°€ λ³€κ²½ν•œ 사항(타사 μ½”λ“œλ₯Ό 더 μ„±κ³΅μ μœΌλ‘œ μ œμ™Έν•˜κΈ° μœ„ν•΄)은 여기에 μ μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ…Έλ“œ 앱에 λŒ€ν•œ μ†ŒμŠ€ 맡을 μ²˜λ¦¬ν•˜λ €κ³  ν•˜λŠ” μ΄μœ λŠ” μ½”λ“œκ°€ μΆ•μ†Œλ˜μ§€ μ•Šμ„ κ°€λŠ₯성이 맀우 높은 것은 μ‚¬μ‹€μ΄μ§€λ§Œ, (예λ₯Ό λ“€μ–΄ typescript둜 μž‘μ„±λœ 경우) 맀우 μ‰½κ²Œ λ³€ν™˜λ  수 μžˆμœΌλ―€λ‘œ μ†ŒμŠ€κ°€ ν•„μš”ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. babel의 좜λ ₯이 μ•„λ‹Œ μž‘μ„±λœ λŒ€λ‘œ μ½”λ“œλ₯Ό ν‘œμ‹œν•˜λ„λ‘ λ§€ν•‘ν•©λ‹ˆλ‹€.

μ’‹μ•„, 이것은 λ‚˜μ—κ²Œ UX λ²„κ·Έμ²˜λŸΌ 보인닀. 제 μƒκ°μ—λŠ” (적어도 Node.js ν”„λ‘œμ νŠΈμ˜ 경우) 경고일 뿐이고 Source code was not found μ•„λ‹ˆλΌ Source maps were not found 와 κ°™μ•„μ•Ό ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 1λ…„ μ΄μƒμ˜ 기둝이 μžˆλŠ” 문제λ₯Ό 방지할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ;)
μ›ν•œλ‹€λ©΄ 이 문제λ₯Ό ν”„λ‘ νŠΈμ—”λ“œ/λ””μŠ€ν”Œλ ˆμ΄ λΆ€λΆ„μ—μ„œ μΌν•˜λŠ” λͺ¨λ“  μ‚¬λžŒμ„ μœ„ν•œ λ³΄κ³ μ„œλ‘œ λ‹€μ‹œ μ—΄κ±°λ‚˜ κ·Έλƒ₯ λ‹«νžŒ μƒνƒœλ‘œ 두고 이 μ˜€ν•΄λ₯Ό 보고할 수 μžˆμŠ΅λ‹ˆλ‹€. λ§ˆμΉ¨λ‚΄ 이것을 λͺ…ν™•νžˆ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰