sourcemap inject/upload doesn't recognize a debug ID snippet minified to template literals and shifts Vite 8 chunks one line
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- Medio día
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript, node.js, typescript, vite
- Área
- build-system, cli, devtools
Línea de trabajo
Start with DEBUGID_REGISTRATION_RE and the bracketed-key regex in packages/cli/src/lib/sourcemap/debug-id.ts, which only accept " or ' as delimiters. Run the reproduction in the issue against a chunk using backtick-quoted registrations; inject --dry-run should report modified 1 today. Done when that case reports skipped 1 with the same delimiter-matching behavior as double quotes, and tests cover both the plain and bracketed forms.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Environment
sentry0.49.0, via@sentry/vite-plugin/@sentry/bundler-plugins11.12.0- Vite 8.3.8 (Rolldown, Oxc minifier),
build.sourcemap: true - The same check is on
mainat cc90ca1e
Summary
Every frame from a Vite 8 build resolves one generated line off in Sentry.
The bundler plugin injects its debug ID snippet in renderChunk, and Vite 8's minifier then rewrites the snippet's string literals as template literals:
e._sentryDebugIds[t]=`4f39e3c4-c308-4c2e-8975-3241d12fbeef`,e._sentryDebugIdIdentifier=`sentry-dbid-4f39e3c4-c308-4c2e-8975-3241d12fbeef`
The plugin then uploads with sourcemap.upload, which runs inject first. DEBUGID_REGISTRATION_RE only matches a value quoted with " or ':
...\\s*=\\s*(["'])(${DEBUGID_PATTERN})\\1
so the CLI doesn't see the existing registration, prepends a second snippet and adds an empty line to the map's mappings. The uploaded copy and its map agree with each other, but the deployed file doesn't have that extra line, so Sentry resolves every frame one line too high.
This is the same mechanism as #2189, with a different trigger: #2190 taught the check Turbopack's _debugIds form, but it still requires quotes.
Reproduction
dir=$(mktemp -d)
cat > "$dir/chunk.js" <<'EOF'
const a=1;
(()=>{try{let e=globalThis,t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`4f39e3c4-c308-4c2e-8975-3241d12fbeef`,e._sentryDebugIdIdentifier=`sentry-dbid-4f39e3c4-c308-4c2e-8975-3241d12fbeef`)}catch{}})();console.log(a);
//# sourceMappingURL=chunk.js.map
//# debugId=4f39e3c4-c308-4c2e-8975-3241d12fbeef
EOF
echo '{"version":3,"sources":["a.ts"],"names":[],"mappings":"AAAA;AACA","debugId":"4f39e3c4-c308-4c2e-8975-3241d12fbeef"}' > "$dir/chunk.js.map"
npx [email protected] sourcemap inject --dry-run --json "$dir"
Expected: "modified": 0, "skipped": 1, as with the same file using " quotes.
Actual: "modified": 1, "skipped": 0.
Suggested fix
Accept a backtick in the quote class:
- ...\\s*=\\s*(["'])(${DEBUGID_PATTERN})\\1`,
+ ...\\s*=\\s*(["'\`])(${DEBUGID_PATTERN})\\1`,
The backreference still requires matching delimiters. The bracketed key form (\\[\\s*["']${DEBUGID_REGISTRY}["']\\s*\\]) probably wants the same, since a minifier can emit e[`_sentryDebugIds`].
We're working around it with a pnpm patch making exactly this change. With it, all of our uploaded chunks match the deployed files except for the appended //# debugId= comment, and their maps are unchanged.
- Lenguaje dominante
- TypeScript
- Estrellas
- 961
- Forks
- 179
- Merge medio
- 15 h 33 min
- PR fusionados (30 d)
- 476
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de getsentry/toolkit
-
MCP mcp-feedback-pattern
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
getsentry/toolkit#2276 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
CLI enhancement MCP
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
getsentry/toolkit#1908 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
getsentry/toolkit#1471 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
get_sentry_resource gives no guidance for Explore > Errors list URLsPosiblemente ocupada @sentry-junior la tomó hoy. AbiertoMCP mcp-feedback-pattern
Dificultad 2/5 1-3 horas Aptitud para principiantes 32/100
getsentry/toolkit#2278 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
getsentry/toolkit#2275 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de getsentry/toolkit
Issues similares
-
Add: BOM CineAbiertoapproved check:passed streams:add
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug platform-android
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Termix-SSH/Mobile#146 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
devswha/herdr-web-ui#3875 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100