diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index f1cd456b84c6..10f22891ac2d 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -7,7 +7,7 @@ import type { SentryNuxtModuleOptions } from './common/types'; import { setupNitroServer } from './vite/nitroServer'; import { setupOrchestrion } from './vite/orchestrion'; import { setupSourceMaps } from './vite/sourceMaps'; -import { addOTelCommonJSImportAlias, findDefaultSdkInitFile, resolveServerApi } from './vite/utils'; +import { findDefaultSdkInitFile, resolveServerApi } from './vite/utils'; export type ModuleOptions = SentryNuxtModuleOptions; type NuxtPageSubset = { file?: string; path: string }; @@ -97,8 +97,6 @@ export default defineNuxtModule({ setupSourceMaps(moduleOptions, nuxt, addVitePlugin); } - addOTelCommonJSImportAlias(nuxt, serverApi === 'nitro3'); - let pagesData: NuxtPageSubset[] = []; nuxt.hooks.hook('pages:extend', pages => { diff --git a/packages/nuxt/src/vite/utils.ts b/packages/nuxt/src/vite/utils.ts index cab39bc95f19..fc393242b682 100644 --- a/packages/nuxt/src/vite/utils.ts +++ b/packages/nuxt/src/vite/utils.ts @@ -224,27 +224,3 @@ export function toResolvablePath(source: string): { path: string; wasFileUrl: bo return undefined; } } - -/** - * Sets up alias to work around OpenTelemetry's incomplete ESM imports. - * https://github.com/getsentry/sentry-javascript/issues/15204 - * - * OpenTelemetry's @opentelemetry/resources package has incomplete imports missing - * the .js file extensions (like execAsync for machine-id detection). This causes module resolution - * errors in certain Nuxt configurations, particularly when local Nuxt modules in Nuxt 4 are present. - * - * @see https://nuxt.com/docs/guide/concepts/esm#aliasing-libraries - */ -export function addOTelCommonJSImportAlias(nuxt: Nuxt, isNitroV3 = false): void { - if (!nuxt.options.dev || isNitroV3) { - return; - } - - if (!nuxt.options.alias) { - nuxt.options.alias = {}; - } - - if (!nuxt.options.alias['@opentelemetry/resources']) { - nuxt.options.alias['@opentelemetry/resources'] = '@opentelemetry/resources/build/src/index.js'; - } -} diff --git a/packages/nuxt/test/vite/utils.test.ts b/packages/nuxt/test/vite/utils.test.ts index 605bf368ca9c..7d1213fdc959 100644 --- a/packages/nuxt/test/vite/utils.test.ts +++ b/packages/nuxt/test/vite/utils.test.ts @@ -3,7 +3,6 @@ import * as fs from 'fs'; import * as path from 'path'; import { afterEach, describe, expect, it, vi } from 'vitest'; import { - addOTelCommonJSImportAlias, constructFunctionReExport, constructWrappedFunctionExportQuery, extractFunctionReexportQueryParameters, @@ -428,72 +427,3 @@ export { foo_sentryWrapped as foo }; expect(result).toBe(''); }); }); - -describe('addOTelCommonJSImportAlias', () => { - it('adds alias for @opentelemetry/resources when options.alias does not exist', () => { - const nuxtMock: Nuxt = { - options: { dev: true }, - } as unknown as Nuxt; - - addOTelCommonJSImportAlias(nuxtMock); - - expect(nuxtMock.options.alias).toEqual({ - '@opentelemetry/resources': '@opentelemetry/resources/build/src/index.js', - }); - }); - - it('adds alias for @opentelemetry/resources when options.alias already exists', () => { - const nuxtMock: Nuxt = { - options: { - dev: true, - alias: { - 'existing-alias': 'some-path', - }, - }, - } as unknown as Nuxt; - - addOTelCommonJSImportAlias(nuxtMock); - - expect(nuxtMock.options.alias).toEqual({ - 'existing-alias': 'some-path', - '@opentelemetry/resources': '@opentelemetry/resources/build/src/index.js', - }); - }); - - it('does not override existing alias for @opentelemetry/resources', () => { - const nuxtMock: Nuxt = { - options: { - dev: true, - alias: { - '@opentelemetry/resources': 'some-other-path', - }, - }, - } as unknown as Nuxt; - - addOTelCommonJSImportAlias(nuxtMock); - - expect(nuxtMock.options.alias).toEqual({ - '@opentelemetry/resources': 'some-other-path', - }); - }); - - it('does not add alias when not development mode', () => { - const nuxtMock: Nuxt = { - options: {}, - } as unknown as Nuxt; - - addOTelCommonJSImportAlias(nuxtMock); - - expect(nuxtMock.options.alias).toBeUndefined(); - }); - - it('does not add alias when in Nitro v3+ (Rolldown incompatibility)', () => { - const nuxtMock: Nuxt = { - options: { dev: true }, - } as unknown as Nuxt; - - addOTelCommonJSImportAlias(nuxtMock, true); - - expect(nuxtMock.options.alias).toBeUndefined(); - }); -});