@sentry/browser
@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.captureException
çŽæ¥äœ¿çšãããç¬èªã®ã€ãã³ããäœæãããç¹å¥ãªçç±ã¯ãããŸããïŒ
ã¯ããããã¯ã€ãã³ãã§ãïŒ https ïŒ
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
ã³ãŒã«ããããããªãã®ããã«ããã€ãã®ããšãã¯ãªã¢ããããšãé¡ã£ãŠããŸãã ããã«ãµããŒããå¿ èŠãªå Žåã¯ããæ°è»œã«ãåãåãããã ããã
ããã«ã¡ã¯@kamilogorek
詳现ãªåçããããšãããããŸãã
æ£è§£ã§ããïŒNode.jsã¢ããªã±ãŒã·ã§ã³ã®ã¹ã¿ãã¯ãã¬ãŒã¹ãSentryã«è¡šç€ºããäžè¬çãªæ¹æ³ã¯ãRewriteFramesçµ±åãä»ããŠããŸãã¯æåã§åãªãªãŒã¹ã®ãã¡ã€ã«ãã¢ããããŒãããããšã§ãã ãããããªããã©ãããŠcaptureException
/ catch-allã®ã¹ã¿ãã¯ãã¬ãŒã¹ã衚瀺ãããããœãŒã¹ã³ãŒããèŠã€ãããŸããããšãããšã©ãŒã¯ããªã¬ãŒãããŸããã
node_modules
libã§ãšã©ãŒãã¹ããŒããæ¹æ³ããã¹ãããŸããã ã©ã€ãã©ãªããã§ããœãŒã¹ã³ãŒããå«ããŠãšã©ãŒãæ£ããå ±åãããŸãã https://sentry.io/share/issue/2b95ecb13ce24227b2184b2561e4f6e3/ãåç
§ããŠ
ã§ã¯ããªãããã¯captureException
ã§æ©èœãã captureEvent
倱æããã®ã§ããããã
@guischdiäž¡æ¹ã®ã€ãã³ããžã®å®å šãªãªã³ã¯ãéããŠ
ãŸããä»åŸ3é±éã¯äžåšã«ãªãã®ã§ãæ»ã£ãŠãããããã«æ»ãããšæããŸãã
@kamilogorekãªãªãŒã¹ããšã«node_modules
ãã©ã«ããŒå
šäœãã¢ããããŒãããå¿
èŠããããšããããšã§ããïŒ ãµãŒããŒäžã§å®è¡ããŠããŠããã®ãã¹ãŠã®ãœãŒã¹ãå©çšã§ããã®ã«ããªã@sentry/node
ããšã©ãŒã¬ããŒãä»ãã®å¿
èŠãªãã¡ã€ã«ãã¢ããããŒãã§ããªãã®ã§ããïŒ
ãã¬ãŒã çµ±åãèšå®ããåºæ¬çã«node_modules
å
šäœãã¢ããããŒããããšããã®åé¡ã解決ããããšã確èªããŸããã ããããéåžžã«å€ãã®node_modulesãã¡ã€ã«ãã¢ããããŒãããããã»ã¹ã¯éåžžã«é
ãã§ãã
ããã«å¯Ÿãã解決çã¯æ¬¡ã®ããããã ãšæããŸãã
.tar
ãã¢ããããŒãããããšãèš±å¯ãã.js
ãš.map
ã³ã³ãã€ã«ããããã2ã€ã®ãã¡ã€ã«ã®ã¿ããããã€ããŠã¢ããããŒãããŸãããŸãã node_modules
npmããã±ãŒãžã«å«ãŸããŠããªãå
ã®.ts
ãã¡ã€ã«ãåç
§ãããœãŒã¹ãããã«åé¡ããããŸãã-https ïŒ//github.com/prisma/graphql-middleware/issues/159
@kamilogorekãã®åé¡ã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ
ãã¬ãŒã ã®æžãæãã解決çã ã£ãããšã確èªã§ããŸãã
ç§ãã¡ã®ã±ãŒã¹ã¯å°ãç°ãªãããœãŒã¹ããããæ©èœãããããšããŠããŸããããçž®å°ããããã¡ã€ã«ã¯åžžã«Sentryã«ãã£ãŠäœ¿çšããããã®ã§ããã 察å¿ãããªãªãŒã¹ã§ã¯ãçž®å°ããããã¡ã€ã«ãšé¢é£ãããœãŒã¹ããããã¢ããããŒãããŠããŸãã Sentryã¯ãœãŒã¹ããããèŠã€ããŠããããããã©ã«ãã§çž®å°ãã¡ã€ã«ïŒãã ãããœãŒã¹ããããšåããã¹ã§ãã¹ããããŠããïŒã«ãªã£ãŠããããã§ãã
Sentryã®initã®çµ±åããŒã«new Integrations.RewriteFrames()
ãè¿œå ãããšãããæ°ããåé¡ããšã«ãœãŒã¹ããããååŸããå§ããŸããã
RewriteFrames
çµ±åãšnode_modules
ã¢ããããŒããåé¡ã解決ããŠããããã«èŠããããšãç¥ã£ãŠãããšããã§ãããã ããããæåã«ïŒ @ mieszko4ã§ãã§ã«è¿°ã¹ãããã«ïŒãéåžžã«å€ãã®ãã¡ã€ã«ãã¢ããããŒãããã®ã¯éåžžã«é¢åã§ãã ãããŠããã«ç§ã®æåã®çºèŠã¯ã
captureException
/ catch-allã®ã¹ã¿ãã¯ãã¬ãŒã¹ã衚瀺ãããããœãŒã¹ã³ãŒããèŠã€ãããŸããããšã©ãŒãããªã¬ãŒãããªãããš
ãããã£ãŠã次ã®è³ªåã¯æªè§£æ±ºã®ãŸãŸã§ãã
ã§ã¯ããªãããã¯
captureException
ã§æ©èœããcaptureEvent
倱æããã®ã§ããããã
ãã£ãšæ£ç¢ºã«èšãã°ãåé¡ãªãcaptureException
ãä»ããŠãšã©ãŒããã£ããã£ã§ããŸããã captureEvent
ãä»ããŠãã£ããã£ããã«ã¯ããã¹ãŠã®ãã¡ã€ã«ã®ã¢ããããŒãïŒ RewriteFrames
çµ±åãŸãã¯æåïŒãå¿
èŠã§ãã ããœãŒã¹ã³ãŒããèŠã€ãããŸããã§ããã-ãšã©ãŒã ããã¯ãã°ã§ããããããšãæå³ããããã®ã§ããã@ kamilogorekïŒ
@guischdiå¿çãé ããªã£ãŠãã¿ãŸããã å°ããã©ãã¯ã倱ããŸããã ããã§äœãèµ·ãã£ãŠããã®ãç§ã®èšæ¶ããªãã¬ãã·ã¥ããããã€ãã®ãµã³ãã«ã€ãã³ããæäŸã§ããŸããïŒ
@kamilogorek
ã¯ããç§ãã¡ã®åé¡ã¯æ¬¡ã®ãšããã§ãã
captureException
node_module
ããšã©ãŒãã¹ããŒããå Žåã§ãã captureException
ã¯åé¡ãªãæ©èœããŸãã ãã®ãã¹ãäŸå€ãåç
§ããŠãã ããcaptureEvent
ã¯æ©åšã®ããã£ãããäžããŸãïŒ error encountered while processing this event: [...] Source code was not found
; ãã®ãã¹ãã€ãã³ããèŠã@guischdi確èªã®ããã«ãããã¯çã®ããŒãjsãã¡ã€ã«ã§ãããïŒ Webpackãã³ã³ãã€ã«ããœãŒã¹ãããã¯ãããŸããã ç°ãªãè¡ã«2ã€ã®ç°ãªãåŒã³åºãããã1ã€ã®index.js
ãã¡ã€ã«ã ãã§ããïŒ å¯èœã§ããã°ããã®ãã¡ã€ã«ã®å
容ãæäŸã§ããŸããïŒ
@kamilogorek
ã¯ããçã®nodeJSã§ãã äžã§ãªã³ã¯ãindex.js
13è¡ãã¹ãŠããã§ã«è¡šç€ºãããŠããŸãã
@guischdiã¯ããªããã®ããã«åäœããã®ãã調æ»ããŠããŸãïŒåãURLã®2ã€ã®é£ç¶ãããã¬ãŒã ããããããªã¬ãŒããŸãïŒã ãããŸã§ã®éããããžã§ã¯ãã®èšå®ã§[JavaScriptãœãŒã¹ãã§ãããæå¹ã«ãã]ããªãã«ããããšãã§ããŸãã https://sentry.io/settings/kamil-ogorek/projects/testing-project/
ããã¯ããŒãã¢ããªãªã®ã§ããããè¡ãæå³ã¯ãããŸããã
@kamilogorek OKãã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();
ãã®ãšã©ãŒãçºçããŸãïŒ
ãããŠãããã«ã¹ã¿ãã¯ããããŸãïŒ
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
ãšã©ãŒãçºçããŸã
æšæ¥å°å
¥ããä¿®æ£ã¯ãã§ã«å±éãããŠããŸããïŒ
ãŸããçŸåšã®v4.xxããŒãžã§ã³ïŒv4.6.6ïŒããã³@ sentry / nodeã®ææ°ãªãªãŒã¹ïŒv5.14.0ïŒã§ãã¹ããããŠããŸãã
@guischdiã¢ãŒãã£ãã¡ã¯ããã¢ããããŒãããŠããããæ§æã«ãªãªãŒã¹ãå«ãŸããŠããŸããã
æåã«ããã¥ã¡ã³ãã«åŸã£ãŠãã ããïŒ https ïŒ
@kamilogorek
SDKã§ã¯ãã€ãã³ããéä¿¡ããåã«ãã¹ã¿ãã¯ãã¬ãŒã¹ã®åŠçã®äžéšãšããŠãã®æ å ±ãèšé²ããŸãã ãšã©ãŒã¯ããµãŒããŒããã®æ å ±ãå ¥åããããšããŠããããšããçºçããŠããŸãã
ãã ãããªãªãŒã¹ããšã«node_modulesãã¢ããããŒãããããšãå®éã«æåŸ ããŠããããã§ã¯ãªããããããã¯ç§ãã¡ã®åŽã®ãã°ã§ãã
ãã®æç¹ã§@lobsterkatieãç解ããŠããã°ïŒäžèšã§åŒçšïŒãã³ãŒããã¢ããããŒãããå¿
èŠã¯ãããŸããã åé¡ã®ãªã³ã¯ã§ã¯ãåé¡ãç解ããããã«å¿
èŠãªãã¹ãŠã®ãœãŒã¹ã³ãŒãã³ã³ããã¹ãïŒãã®å Žåã¯ã¹ã¯ãªããã®ãã¹ãŠã®ãœãŒã¹ã³ãŒãïŒã確èªã§ããŸãã ãããã£ãŠãããã¯æ£ããèšé²ãããŠããããã§ãã ãœãŒã¹ãããã¯çž®å°ãããŠããªããã¬ãŒã³ãªNode.jsããã°ã©ã ã§ãããããïŒãªã³ã¯ãææ¡ããŠããããã«ïŒãœãŒã¹ããããã¢ããããŒã/æäŸããå¿
èŠã¯ãªããšæããŸãã
æ®ã£ãŠããå¯äžã®åé¡ã¯ãã³ã³ããã¹ããé©åã«æäŸãããŠããªãã®ã«è¡šç€ºããããšã©ãŒã§ãã ãµãŒããŒã¯ãç§ã®åŽããã®è¿œå ã®ã¢ããããŒããå¿
èŠãªãããšãèªèããŠããªãããã§ãã ïŒç§ã¯ãããæ£ãã@lobsterkatieã«ããŠããŸããïŒïŒ
@guischdiæ¢ããŠãããã¡ã€ã«ã¯ãnode_modulesããã§ã¯ãªããã¢ããªããã®ãã®ã§ãããããïŒãµãŒãããŒãã£ã®ã³ãŒããããé©åã«é€å€ããããã«ïŒè¡ã£ãå€æŽã¯ããã§ã¯é©çšãããŸããã
ããŒãã¢ããªã®ãœãŒã¹ããããåŠçããããšããçç±ã¯ãã³ãŒããçž®å°ãããŠããªãå¯èœæ§ãéåžžã«é«ãããšã¯äºå®ã§ãããã³ãŒãã¯éåžžã«ç°¡åã«ãã©ã³ã¹ãã€ã«ãããå¯èœæ§ãããããïŒããšãã°ãã¿ã€ãã¹ã¯ãªããã§èšè¿°ãããŠããå ŽåïŒããœãŒã¹ãå¿ èŠã«ãªãããã§ãã babelããã®åºåã§ã¯ãªããèšè¿°ããããšããã«ã³ãŒãã衚瀺ããããã«ãããããŸãã
ããããŸãããããã¯ç§ã«ã¯UXã®ãã°ã®ããã«èŠããŸãã ç§ã®æèŠã§ã¯ãïŒå°ãªããšãNode.jsãããžã§ã¯ãã®å ŽåïŒããã¯åãªãèŠåã§ããã Source code was not found
ã§ã¯ãªãã Source maps were not found
ãããªãã®ã§ããå¿
èŠããããŸãã ããã«ããã1幎以äžã®å±¥æŽãæã€åé¡ãé²ãããšãã§ããã§ããã;ïŒ
å¿
èŠã«å¿ããŠããã®åé¡ãããã³ããšã³ã/ãã£ã¹ãã¬ã€éšåã§äœæ¥ããŠãã人ã®ã¬ããŒããšããŠå床éãããéãããŸãŸã«ããŠãã®èª€è§£ãå ±åããŠãã ããã æçµçã«ãããæ確ã«ããŠãããŠããããšãïŒ
æãåèã«ãªãã³ã¡ã³ã
ããããŸãããããã¯ç§ã«ã¯UXã®ãã°ã®ããã«èŠããŸãã ç§ã®æèŠã§ã¯ãïŒå°ãªããšãNode.jsãããžã§ã¯ãã®å ŽåïŒããã¯åãªãèŠåã§ããã
Source code was not found
ã§ã¯ãªããSource maps were not found
ãããªãã®ã§ããå¿ èŠããããŸãã ããã«ããã1幎以äžã®å±¥æŽãæã€åé¡ãé²ãããšãã§ããã§ããã;ïŒå¿ èŠã«å¿ããŠããã®åé¡ãããã³ããšã³ã/ãã£ã¹ãã¬ã€éšåã§äœæ¥ããŠãã人ã®ã¬ããŒããšããŠå床éãããéãããŸãŸã«ããŠãã®èª€è§£ãå ±åããŠãã ããã æçµçã«ãããæ確ã«ããŠãããŠããããšãïŒ