New:Socket for Asana Is Now Available.Learn more
Get Started

@sentry/node

Package Overview
Dependencies
Maintainers
1
Versions
728
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sentry/node

Sentry Node SDK using OpenTelemetry for performance instrumentation

Source
npmnpm
Version
11.0.0-beta.0
Version published
Weekly downloads
35M
3.52%
Maintainers
1
Weekly downloads
 
Created
Source

Sentry

Official Sentry SDK for Node

npm version npm dm npm dt

Installation

npm install @sentry/node

# Or yarn
yarn add @sentry/node

Usage

Sentry should be initialized as early in your app as possible. It is essential that you call Sentry.init before you require any other modules in your application, otherwise auto-instrumentation of these modules will not work.

You need to create a file named instrument.js that imports and initializes Sentry:

// CJS Syntax
const Sentry = require('@sentry/node');
// ESM Syntax
import * as Sentry from '@sentry/node';

Sentry.init({
  dsn: '__DSN__',
  // ...
});

You need to require or import the instrument.js file before importing any other modules in your application. This is necessary to ensure that Sentry can automatically instrument all modules in your application:

// Import this first!
import './instrument';

// Now import other modules
import http from 'http';

// Your application code goes here

ESM Support

When running your application in ESM mode, you should use the Node.js --import command line option to ensure that Sentry is loaded before the application code is evaluated.

Adjust the Node.js call for your application to use the --import parameter and point it at instrument.js, which contains your Sentry.init() code:

# Note: This is only available for Node v18.19.0 onwards.
node --import ./instrument.mjs app.mjs

If it is not possible for you to pass the --import flag to the Node.js binary, you can alternatively use the NODE_OPTIONS environment variable as follows:

NODE_OPTIONS="--import ./instrument.mjs" npm run start

Bundling your server

@sentry/node installs its automatic (diagnostics-channel) instrumentation through a runtime module hook that ships in @sentry/server-runtime-injection and is designed to run from node_modules. There are two supported ways to keep auto-instrumentation working when you bundle your server:

  • Keep @sentry/server-runtime-injection external (do not inline it into the bundle) so the runtime hook loads from node_modules. Most bundlers externalize node_modules for a Node target by default; if yours inlines everything, mark @sentry/server-runtime-injection as external explicitly.
  • Instrument at build time with the Sentry bundler plugins (@sentry/node/esbuild, @sentry/node/webpack, @sentry/node/vite, @sentry/node/rollup), which inject the instrumentation into your bundled dependencies during the build. In this mode the runtime hook is not needed.

If you bundle @sentry/server-runtime-injection and don't use the build-time plugin, its internal code transformer is stripped and runtime auto-instrumentation is disabled. @sentry/node warns the first time an instrumented dependency loads uninstrumented, so a build-time-instrumented app never sees the warning.

FAQs

Package last updated on 02 Sep 2026

Related posts