Nonvoluntary Professional Mangling
    Have ideas to improve npm?Join in the discussion! »

    @nkaurelien/nest-bugsnag
    TypeScript icon, indicating that this package has built-in type declarations

    6.1.0 • Public • Published

    Nest Logo

    A Nest module wrapper for bugsnag logger.

    NPM Version Package License

    Description

    A Nest module wrapper for bugsnag-js logger.

    Installation

    $ npm i @bugsnag/plugin-express --save
    $ npm i @nkaurelien/nest-bugsnag --save

    Quick Start

    Import the BugsnagModule into the module. For example AppModule:

    import { Module } from '@nestjs/common';
    import { BugsnagModule } from '@nkaurelien/nest-bugsnag';
    import BugsnagPluginExpress from '@bugsnag/plugin-express'
     
     
    @Module({
      imports: [
        BugsnagModule.forRoot({
              apiKey: '<API_KEY>',
              plugins: [BugsnagPluginExpress],
          }),
      ],
    })
    export class AppModule { }

    In the main.ts file, change the HTTP platform to use express

    // change
    const app = await NestFactory.create(AppModule);
    // to
    const app = await NestFactory.create<NestExpressApplication>(AppModule);

    This handles any errors that Express catches

    app.get(BugsnagService).handleAnyErrors(app);

    Then you can inject BugsnagService. Example:

    import { Controller } from '@nestjs/common';
    import { BugsnagService } from '@nkaurelien/nest-bugsnag';
     
    @Controller('cats')
    export class CatsController {
      constructor(private readonly logger: BugsnagService) { }
    }

    BugsnagService has instance property which wrap bugsnag client. So you can access it by calling:

    try {
      something.risky()
    } catch (e) {
        this.logger.instance.notify('message');
    }

    In your controller, you can call req.bugsnag.notify(err) which will include information about the request in the error report. For example:

     @Get()
     getHello(@Request() req)string {
         req.bugsnag.notify(
             new Error('First Error'),
             function (event) {
                 // event.addMetadata('product', product)
             });
         return 'Hello World!';
     }

    Note that BugsnagModule is a global module, it will be available in all you feature modules.

    Async configuration Sample

    import { Module } from '@nestjs/common';
    import { BugsnagModule } from '@nkaurelien/nest-bugsnag';
     
    @Module({
      imports: [
        BugsnagModule.forRootAsync({
          useFactory: (configService: ConfigService) => ({
            // options
          }),
          inject: [ConfigService],
        }),
      ],
    })
    export class AppModule { }

    The factory might be async and is able to inject dependencies through the inject option.

    Keywords

    bugsnagJs, nestJs, logger

    Install

    npm i @nkaurelien/nest-bugsnag

    DownloadsWeekly Downloads

    487

    Version

    6.1.0

    License

    MIT

    Unpacked Size

    52.8 kB

    Total Files

    27

    Last publish

    Collaborators

    • avatar