getsentry / sentry-javascript

Official Sentry SDKs for JavaScript
https://sentry.io
MIT License
7.99k stars 1.57k forks source link

Integrations not working for Bun #14202

Open doepnern opened 6 days ago

doepnern commented 6 days ago

Is there an existing issue for this?

How do you use Sentry?

Sentry Saas (sentry.io)

Which SDK are you using?

@sentry/bun

SDK Version

8.37.1

Framework Version

No response

Link to Sentry event

No response

Reproduction Example/SDK Setup

Hey, which integrations should I expect to work in bun? So far only manual instrumentation seems to be working. Is this expected behavior? If so, a few more notes on that would be appreciated in the documentation.

Bun

import * as Sentry from "@sentry/bun";

// Ensure to call this before importing any other modules!
Sentry.init({
    dsn: DSN,
    debug: true,
    // Add Performance Monitoring by setting tracesSampleRate
    // Set tracesSampleRate to 1.0 to capture 100% of transactions
    // We recommend adjusting this value in production
    tracesSampleRate: 1.0,
});
import "./instrument.ts";
import * as Sentry from "@sentry/bun";

await Sentry.startSpan(
    {
        op: "test",
        name: "My First Test Transaction in bun",
    },
    async () => {
        await fetch(`https://google.com`);
    },
);

const sleep = () => new Promise((res) => setTimeout(() => res("hi"), 3000));

await sleep();
throw new Error("I just crashed Bun");
`

Node
`
import * as Sentry from "@sentry/node";

// Ensure to call this before importing any other modules!
Sentry.init({
    dsn: DSN,
    debug: true,
    // Add Performance Monitoring by setting tracesSampleRate
    // Set tracesSampleRate to 1.0 to capture 100% of transactions
    // We recommend adjusting this value in production
    tracesSampleRate: 1.0,
});

Steps to Reproduce

https://github.com/doepnern/sentry-node-bun-comparison

Expected Result

Expected http instrumentation to work, according to docs (See result for node below)

https://docs.sentry.io/platforms/javascript/guides/bun/configuration/integrations/http/

Image

Actual Result

Image

error handling is noted as not working in the npm package page, so i guess that is to be expected

Image

lforst commented 5 days ago

@AbhiPrasad should fetch client instrumentation work for bun work?

andreiborza commented 5 days ago

Hi @doepnern, thanks for filing this. Unfortunately this is still an issue upstream in bun, see https://github.com/oven-sh/bun/issues/13165.

You should filter out the http integration for the time being.

import * as Sentry from '@sentry/bun';

Sentry.init({
  dsn: '__MY_DSN__',
  integrations: function (integrations) {
    // integrations will be all default integrations
    return integrations.filter(function (integration) {
      return integration.name !== "Http";
    });
  },
  tracesSampleRate: 1.0,
});