Integrating Sentry for JS error tracking

This commit is contained in:
Jeff Avallone 2017-07-29 17:36:46 -04:00
parent fac820aecd
commit 90253b69c9
4 changed files with 13 additions and 14 deletions

View File

@ -77,6 +77,11 @@ gulp.task('markup', 'Build markup into ./build directory.', ['webpack'], functio
'gaPropertyId': process.env.GA_PROP 'gaPropertyId': process.env.GA_PROP
}); });
} }
if (process.env.SENTRY_KEY) {
hbStream.data({
'sentryKey': process.env.SENTRY_KEY
});
}
return gulp.src(config.globs.templates) return gulp.src(config.globs.templates)
.pipe(frontMatter()) .pipe(frontMatter())
.pipe(hbStream) .pipe(hbStream)

View File

@ -63,6 +63,8 @@
<script type="text/html" id="svg-container-base"> <script type="text/html" id="svg-container-base">
{{> "svg_template"}} {{> "svg_template"}}
</script> </script>
{{> "sentry"}}
{{/block}} {{/block}}
</footer> </footer>

6
lib/partials/sentry.hbs Normal file
View File

@ -0,0 +1,6 @@
{{#if sentryKey}}
<script src="https://cdn.ravenjs.com/3.17.0/raven.min.js" crossorigin="anonymous"></script>
<script>
Raven.config('{{{sentryKey}}}').install()
</script>
{{/if}}

View File

@ -11,20 +11,6 @@ import Parser from './parser/javascript.js';
import _ from 'lodash'; import _ from 'lodash';
(function() { (function() {
// Global error handler that will send unhandled JavaScript exceptions and
// stack-traces to Google Analytics. This data can be used to find errors in
// code that were not found during testing.
window.addEventListener('error', function(error) {
if (error.lineno !== 0) {
util.track('send', 'event', 'global', 'exception',
`${error.filename}(${error.lineno},${error.colno}): ${error.message}`);
if (typeof error.error !== 'undefined' && typeof error.error.stack !== 'undefined') {
util.track('send', 'event', 'global', 'stack trace', error.error.stack);
}
}
});
// Initialize the main page of the site. Functionality is kept in the // Initialize the main page of the site. Functionality is kept in the
// [Regexper class](./regexper.html). // [Regexper class](./regexper.html).
if (document.body.querySelector('#content .application')) { if (document.body.querySelector('#content .application')) {