ESM (MJS)

Learn about running Sentry in an ESM application.

When running your application in ESM mode, you can't use require() to load modules. Instead, you have to use the --import command line options to load a module before the application starts.

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

instrument.mjs
Copied
import * as Sentry from '@sentry/node';

// Ensure to call this before importing any other modules!
Sentry.init({
  dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0',

  // Add Performance Monitoring by setting tracesSampleRate
  // We recommend adjusting this value in production
  tracesSampleRate: 1.0,
});

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:

Copied
# 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:

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

We do not support ESM in Node versions before 18.19.0.

Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").