Skip to content

NestJS

View Markdown

Server error capture for your NestJS backend — observe and rethrow, so your own error handling runs untouched.

@everock/nest captures server errors from your NestJS backend. It observes and rethrows, so your own exception handling runs untouched.

Quick start

Install the package

This adapter is available from the source checkout. Build its archive with node scripts/pack-public-packages.mjs dist/npm 0.1.0-beta.1 at the repository root, then install the archive in your app using its actual path.

npm install /path/to/everock/dist/npm/everock-nest-0.1.0-beta.1.tgz

Import the instrument entry first

It must load before anything else so it can wrap the runtime. Put it at the very top of main.ts.

main.ts
import '@everock/nest/instrument';

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

Register the module

Adds a global interceptor that captures handler errors and rethrows them.

app.module.ts
import { Module } from '@nestjs/common';
import { EverockModule } from '@everock/nest';

@Module({
  imports: [EverockModule.forRoot()],
})
export class AppModule {}

What's captured

  • Errors thrown by controllers and providers, via the global interceptor.
  • Uncaught exceptions and unhandled rejections, via the runtime hooks.
  • Outbound calls (other APIs, databases) are detected automatically — see Node.

Report a handled error

any service
import { captureError } from '@everock/nest';

try {
  await chargeCard();
} catch (error) {
  captureError(error);
  throw error;
}