@givve/errors
v4.4.4
Published
This package adds Sentry error handling to your project.
Downloads
19
Keywords
Readme
Npm package @givve/errors
This package adds Sentry error handling to your project.
Settings
Sentry dsn property needs to be set. To be able up use SourceMaps, for every app deployment a sentry release needs to be created and artifacts uploaded. To use those Sentry.init needs the release version added to the congif. Optionally a 'release' can be set.
Sentry accepts a version as 'release' property in the init options. This version value needs to be prefixed with the sentry project name. E.g. [email protected]
The package.json version can be set in the environment.ts file.
export const environment = {
production: false,
sentry: {
dsn: '',
// this is the sentry project name
releasePrefix: 'my-project',
},
version: require('../../package.json').version
};
In app.module.ts
import { ErrorsModule, ErrorsNoopModule } from '@givve/errors';
import * as Sentry from '@sentry/browser';
const dsn = (env as any).sentry && (env as any).sentry.dsn ? (env as any).sentry.dsn : null;
const release = (env as any).sentry && (env as any).sentry.releasePrefix ? `${(env as any).sentry.releasePrefix}@${env.version}` : null;
if (dsn) {
const options = {dsn};
if (release) {
Object.assign(options, {release});
}
Sentry.init(options);
}
// optionally ignore unauthenticated 401 request errors
const config = {ignoreStatus: [401]};
const errorsModule = dsn ? ErrorsModule.forRoot(config) : ErrorsNoopModule;
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
errorsModule
],
bootstrap: [AppComponent]
})
export class AppModule { }
Set 'sentry.dsn' property in the environment.ts if you want to use Sentry error monitoring, e.g. environment.prod.ts
Because the notificationService.captureException can be called from anywhere, e.g. from the http interceptor catching a 401, the ErrorsNoopModule has to be imported in case 'sentry.dsn' is not set.
To submit a user alongside your errors, call notificationService.setUser after the login with the user object containing the following data:
export interface SentryUserData {
id: string;
username: string;
}