Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta Adatta ai principianti
#4,860 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
javascript, python, typescript
Ambito
backend, devtools

Direzione di ricerca

Leggi extractors/resolution.py intorno a _resolve_js_module_path (righe 855–856) e confrontane la gestione con quella di extractors/markdown.py intorno alla riga 289. Verifica come vengono risolti gli specificatori relativi JavaScript e TypeScript con stringhe di query o frammenti, quindi esegui i test di risoluzione pertinenti. Il lavoro è completato quando ./foo.js?v=123 viene risolto in ./foo.js senza creare un nodo fantasma; l’issue non indica un file di test specifico.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
Python
Stelle
124k
Fork
11.9k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Graphify-Labs/graphify

Tutte le issue di Graphify-Labs/graphify

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.