From 4e5737b42c29113983d6249a28169dd295ac8a76 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 11 Feb 2025 13:10:59 +0100 Subject: [PATCH 1/2] fix(sveltekit): Avoid top-level vite import --- packages/sveltekit/src/vite/sourceMaps.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/sveltekit/src/vite/sourceMaps.ts b/packages/sveltekit/src/vite/sourceMaps.ts index be0334348e70..972a4f1dd82a 100644 --- a/packages/sveltekit/src/vite/sourceMaps.ts +++ b/packages/sveltekit/src/vite/sourceMaps.ts @@ -6,7 +6,7 @@ import { consoleSandbox, escapeStringForRegex, uuid4 } from '@sentry/core'; import { getSentryRelease } from '@sentry/node'; import type { SentryVitePluginOptions } from '@sentry/vite-plugin'; import { sentryVitePlugin } from '@sentry/vite-plugin'; -import { type Plugin, type UserConfig, loadConfigFromFile } from 'vite'; +import type { Plugin, UserConfig } from 'vite'; import MagicString from 'magic-string'; import { WRAPPED_MODULE_SUFFIX } from './autoInstrument'; @@ -76,7 +76,9 @@ export async function makeCustomSentryVitePlugins(options?: CustomSentryVitePlug const defaultFileDeletionGlob = ['./.*/**/*.map', `./${adapterOutputDir}/**/*.map`]; if (!globalWithSourceMapSetting._sentry_sourceMapSetting) { - const configFile = await loadConfigFromFile({ command: 'build', mode: 'production' }); + // @ts-expect-error - the dynamic import here works fine + const Vite = await import('vite'); + const configFile = await Vite.loadConfigFromFile({ command: 'build', mode: 'production' }); if (configFile) { globalWithSourceMapSetting._sentry_sourceMapSetting = getUpdatedSourceMapSetting(configFile.config); From cba2e7393c27f219026b804b961dbb4efdd4110d Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 11 Feb 2025 13:45:41 +0100 Subject: [PATCH 2/2] guard with try/catch --- packages/sveltekit/src/vite/sourceMaps.ts | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/sveltekit/src/vite/sourceMaps.ts b/packages/sveltekit/src/vite/sourceMaps.ts index 972a4f1dd82a..799688b33845 100644 --- a/packages/sveltekit/src/vite/sourceMaps.ts +++ b/packages/sveltekit/src/vite/sourceMaps.ts @@ -76,9 +76,26 @@ export async function makeCustomSentryVitePlugins(options?: CustomSentryVitePlug const defaultFileDeletionGlob = ['./.*/**/*.map', `./${adapterOutputDir}/**/*.map`]; if (!globalWithSourceMapSetting._sentry_sourceMapSetting) { - // @ts-expect-error - the dynamic import here works fine - const Vite = await import('vite'); - const configFile = await Vite.loadConfigFromFile({ command: 'build', mode: 'production' }); + let configFile: { + path: string; + config: UserConfig; + dependencies: string[]; + } | null = null; + + try { + // @ts-expect-error - the dynamic import here works fine + const Vite = await import('vite'); + configFile = await Vite.loadConfigFromFile({ command: 'build', mode: 'production' }); + } catch { + if (options?.debug) { + consoleSandbox(() => { + // eslint-disable-next-line no-console + console.warn( + '[Sentry] Could not import Vite to load your vite config. Please set `build.sourcemap` to `true` or `hidden` to enable source map generation.', + ); + }); + } + } if (configFile) { globalWithSourceMapSetting._sentry_sourceMapSetting = getUpdatedSourceMapSetting(configFile.config);