Sentry-javascript: UnhandledRejection: κ°’μœΌλ‘œ 캑처된 였λ₯˜κ°€ μ•„λ‹Œ 약속 κ±°λΆ€: μ‹œκ°„ 초과

에 λ§Œλ“  2020λ…„ 03μ›” 25일  Β·  14μ½”λ©˜νŠΈ  Β·  좜처: getsentry/sentry-javascript

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

@sentry/[email protected]

μ„€λͺ…

λ™μΌν•œ μ„œλͺ…을 λ”°λ₯΄λŠ” λ§Žμ€ μ–‘μ˜ μ˜ˆμ™Έλ₯Ό μˆ˜μ‹ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 그것듀은 λͺ¨λ“  νŽ˜μ΄μ§€μ™€ 겉보기에 식별 κ°€λŠ₯ν•œ νŒ¨ν„΄μ΄ μ—†λŠ” λͺ¨λ“  μ’…λ₯˜μ˜ μž₯μ†Œμ—μ„œ λ°œμƒν•©λ‹ˆλ‹€. μ‚¬μš© λΉˆλ„μ™€ 거의 λ™μΌν•œ λΉˆλ„λ‘œ λͺ¨λ“  λΈŒλΌμš°μ €μ—μ„œ λ°œμƒν•©λ‹ˆλ‹€.

μ²˜λ¦¬λ˜μ§€ μ•Šμ€ κ±°λΆ€
κ°’μœΌλ‘œ 캑처된 였λ₯˜κ°€ μ•„λ‹Œ 약속 κ±°λΆ€: μ‹œκ°„ 초과

λͺ¨λ“  κ²½μš°μ— μ˜ˆμ™Έκ°€ λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μŠ€νƒ μΆ”μ μ΄λ‚˜ μΆ”κ°€ 정보가 μ—†μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것이 제3자 μ½”λ“œμ—μ„œ λΉ„λ‘―λœ 것이라고 ν™•μ‹ ν•˜μ§€λ§Œ 계속할 정보가 μ—†μœΌλ©΄ 이것을 κ³ μ •ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

Sentryκ°€ 였λ₯˜μ˜ 원인을 μ •ν™•νžˆ μ°Ύμ•„λ‚΄λŠ” 데 도움이 λ˜λŠ” μΆ”κ°€ 정보λ₯Ό 보고해야 ν•˜λŠ” κ²ƒμ²˜λŸΌ λŠκ»΄μ§€κΈ° λ•Œλ¬Έμ— 이것을 λ²„κ·Έλ‘œ μ—¬λŠ” κ²ƒμž…λ‹ˆλ‹€.

이에 λŒ€ν•œ κΈ°μ‘΄ λ¬Έμ œκ°€ ν•΄κ²° 없이 μ’…λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€: https://github.com/getsentry/sentry-javascript/issues/2210

Discussion

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

λ¬Έμ œλŠ” λ°”λ‘œ 여기에 μžˆμŠ΅λ‹ˆλ‹€. https://www.gstatic.com/recaptcha/releases/P6KLRNy7h3K160ZmYNUOAce7/recaptcha__en.js

c.reject("Timeout ("+y+")")

λ˜λŠ”

H((vn.delete(P),"Timeout")

tl;dr - κΈ°λ³Έ κ°’μœΌλ‘œ κ±°λΆ€ν•˜μ§€λ§Œ new Error("timeout") κ±°λΆ€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이 경우 λ¬Έμ œκ°€ 해결될 λ•ŒκΉŒμ§€ μ΅œμ„ μ˜ 해결책은 μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ 였λ₯˜λ₯Ό λ¬΄μ‹œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

Sentry.init({
  beforeSend(event, hint) {
    if (hint.originalException === "Timeout") return null;
    return event;
  }
});

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

이와 같은 λ¬Έμ œκ°€ μ—¬λŸ¬ 개 μžˆμ—ˆκ³  Google recaptcha μ½”λ“œλ‘œ κ³ μ •ν–ˆμŠ΅λ‹ˆλ‹€. 맀우 벗겨지기 λ•Œλ¬Έμ— recaptchaλ₯Ό μ œκ±°ν•˜κ³  였λ₯˜κ°€ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆλ‹€.

@JustFly1984 확인

Google 버그 μΆ”μ κΈ°μ—μ„œ λ¬Έμ œμ— μ‹€νŒ¨ν–ˆμ§€λ§Œ μ‹œνŠΈλ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@JustFly1984 λ„€. 당신을 μœ„ν•œ Googleμž…λ‹ˆλ‹€. μ‹œνŠΈκ°€ μ œκ³΅λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ¬Έμ œλŠ” λ°”λ‘œ 여기에 μžˆμŠ΅λ‹ˆλ‹€. https://www.gstatic.com/recaptcha/releases/P6KLRNy7h3K160ZmYNUOAce7/recaptcha__en.js

c.reject("Timeout ("+y+")")

λ˜λŠ”

H((vn.delete(P),"Timeout")

tl;dr - κΈ°λ³Έ κ°’μœΌλ‘œ κ±°λΆ€ν•˜μ§€λ§Œ new Error("timeout") κ±°λΆ€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이 경우 λ¬Έμ œκ°€ 해결될 λ•ŒκΉŒμ§€ μ΅œμ„ μ˜ 해결책은 μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ 였λ₯˜λ₯Ό λ¬΄μ‹œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

Sentry.init({
  beforeSend(event, hint) {
    if (hint.originalException === "Timeout") return null;
    return event;
  }
});

@kamilogorek κ°μ‚¬ν•©λ‹ˆλ‹€. λŒ€μ‹œλ³΄λ“œμ—μ„œ λ¬΄μ‹œν•˜λŠ” λŒ€μ‹  ν΄λΌμ΄μ–ΈνŠΈμ˜ beforeSend μ—μ„œ 이것을 ν•„ν„°λ§ν•˜λŠ” μ΄μœ κ°€ κΆκΈˆν•˜μ‹­λ‹ˆκΉŒ?

이 였λ₯˜λŠ” λ„ˆλ¬΄ 일반적이기 λ•Œλ¬Έμž…λ‹ˆλ‹€. 거짓 긍정 일치λ₯Ό μ–»κΈ°κ°€ λ„ˆλ¬΄ μ‰½μŠ΅λ‹ˆλ‹€.
λ˜ν•œ 이 μ •ν™•ν•œ Timeout 였λ₯˜λ₯Ό λ³Έ 적이 μ—†μŠ΅λ‹ˆλ‹€. :D

@kamilogorek λ„€. λ‚΄ λ¬Έμ œλŠ” ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ ν•„ν„°λ§ν•˜λ©΄ μ€‘μš”ν•œ 였λ₯˜λ₯Ό λ§ˆμŠ€ν‚Ήν•  수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 적어도 λŒ€μ‹œλ³΄λ“œμ—μ„œ λ¬΄μ‹œν•΄λ„ λ°μ΄ν„°λŠ” 계속 μ €μž₯λ©λ‹ˆλ‹€.

@Undistraction ν•„ν„°λ§λœ μ΄λ²€νŠΈλŠ” μ΅œμ’… μ‚¬μš©μžμ— λŒ€ν•΄ μ‚­μ œλ©λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ ν• λ‹ΉλŸ‰μ— ν¬ν•¨λ©λ‹ˆλ‹€.

@kamilogorek μ•„. ν• λ‹ΉλŸ‰μ„ κ³ λ €ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λͺ…ν™•νžˆ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

이 μ‹œκ°„ μ΄ˆκ³Όκ°€ μ΅œμ’… μ‚¬μš©μžμ—κ²Œ μ–΄λ–€ 영ν–₯을 λ―ΈμΉ˜λŠ”μ§€ μ•„λŠ” μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

μ›λž˜ λ¬Έμ œκ°€ λΆ€λΆ„μ μœΌλ‘œ ν•΄κ²°λ˜μ—ˆκ±°λ‚˜ μž‘λ™ν•˜λŠ” μ†”λ£¨μ…˜μ΄ μžˆλŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λ―€λ‘œ 문제λ₯Ό μ’…λ£Œν•©λ‹ˆλ‹€. μ—¬μ „νžˆ 문제인 경우 λˆ„κ΅°κ°€κ°€ μƒˆλ‘œμš΄ μ„€λͺ…μœΌλ‘œ μƒˆ 문제λ₯Ό μƒμ„±ν•˜λŠ” 것을 μ„ ν˜Έν•©λ‹ˆλ‹€.
μ—¬μ „νžˆ 관련이 μžˆλŠ” 경우 μ£Όμ €ν•˜μ§€ 말고 μ €μ—κ²Œ 핑을 λ³΄λ‚΄μ£Όμ‹­μ‹œμ˜€. 그러면 기꺼이 λ‹€μ‹œ μ—΄μ–΄ μž‘μ—…ν•˜κ² μŠ΅λ‹ˆλ‹€.
건배!

@kamilogorek λ”°λΌμ„œ 이 μ‹œκ°„ 초과 λ¬Έμ œλŠ” μ΅œμ’… μ‚¬μš©μžμ—κ²Œ 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμœΌλ©° 이λ₯Ό λ¬΄μ‹œν•˜λŠ” 것이 쒋은 ν•΄κ²°μ±…μž…λ‹ˆκΉŒ?

μ½”λ“œλ² μ΄μŠ€κ°€ ReCaptcha SDK에 μ–΄λ–»κ²Œ μ—°κ²°λ˜μ–΄ μžˆλŠ”μ§€μ— 따라 λ‹€λ₯΄μ§€λ§Œ 일반적으둜 λŒ€λΆ€λΆ„μ˜ 경우 예, μ΅œμ’… 결과에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.

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