From bb7ac8f8e3bc2a9437b074fbfcf6d050bd64ee16 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 7 May 2024 09:50:32 +0200 Subject: [PATCH] feat(express): Warn if express is not instrumented --- packages/node/src/integrations/tracing/express.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/node/src/integrations/tracing/express.ts b/packages/node/src/integrations/tracing/express.ts index 8f0e93771403..d9ef43f42d0e 100644 --- a/packages/node/src/integrations/tracing/express.ts +++ b/packages/node/src/integrations/tracing/express.ts @@ -5,7 +5,8 @@ import { captureException, getClient, getIsolationScope } from '@sentry/core'; import { addOpenTelemetryInstrumentation } from '@sentry/opentelemetry'; import type { IntegrationFn } from '@sentry/types'; -import { logger } from '@sentry/utils'; +import { isWrapped } from '@opentelemetry/core'; +import { consoleSandbox, logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../../debug-build'; import type { NodeClient } from '../../sdk/client'; import { addOriginToSpan } from '../../utils/addOriginToSpan'; @@ -117,6 +118,15 @@ export function expressErrorHandler(options?: { */ export function setupExpressErrorHandler(app: { use: (middleware: ExpressMiddleware) => unknown }): void { app.use(expressErrorHandler()); + + if (!isWrapped(app.use)) { + consoleSandbox(() => { + // eslint-disable-next-line no-console + console.warn( + '[Sentry] Express is not instrumented. This is likely because you required/imported express before calling `Sentry.init()`.', + ); + }); + } } function getStatusCodeFromResponse(error: MiddlewareError): number {