Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Relative JS imports with a query string (`./foo.js?v=123`) are not resolved

Abierto Apto para principiantes
#4,860 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
javascript, python, typescript
Área
backend, devtools

Línea de trabajo

Lee extractors/resolution.py alrededor de _resolve_js_module_path (líneas 855–856) y compara su tratamiento con el de extractors/markdown.py alrededor de la línea 289. Comprueba cómo se resuelven los especificadores relativos de JavaScript y TypeScript con cadenas de consulta o fragmentos, y ejecuta las pruebas de resolución pertinentes. Se considera terminado cuando ./foo.js?v=123 se resuelve como ./foo.js sin crear un nodo fantasma; el issue no indica un archivo de prueba específico.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Version: graphify 0.9.93 (graphifyy), extract --code-only, GRAPHIFY_BACKEND=none

Description
ES module imports that include a cache-busting query string are not resolved to the target file:

import { foo } from './lib/foo.js?v=134';

Instead of an imports_from edge to lib/foo.js, graphify creates a phantom node (e.g. ref_foo_js_v_134) and the real file gets no inbound edge. Symbol imports and cross-file calls are lost as well, since they depend on the module resolving.

Impact (real project, 93 JS files)

  • Phantom _v_ nodes: 96 → 0 after stripping the suffix
  • Inbound imports_from edges for the most-used module: 0 → 29
  • Symbol imports: 30 → 413
  • About 400 cross-file calls edges recovered

Root cause
extractors/resolution.py, lines 855-856 (_resolve_js_module_path): relative specifiers are resolved with start_dir / raw without stripping the ?query / #fragment part. The Markdown extractor already strips it (extractors/markdown.py:289), so applying the same normalization to relative JS/TS specifiers should fix it.

Also present on v8 (default branch) as of 0a8cd4e1e342235fe53e881fb5d591bf0460071f (resolution.py lines 868-869).

Current workaround
Copy the tree to a temp dir, strip the suffix with sed -E 's/(\.js)\?v=[0-9]+/\1/g', and extract from the copy.

Expected behavior
./foo.js?v=123 resolves to ./foo.js, as browsers and bundlers do for module resolution.

Related: #2849 lists one ../styles.css?url import under "Resource-query import is unresolved". It looks like the same root cause.

Lenguaje dominante
Python
Estrellas
124k
Forks
11.9k
Métricas de merge de PR
Sin PR fusionados en 30 d

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Graphify-Labs/graphify

Todos los issues de Graphify-Labs/graphify

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.