web-bundle: a redirected remote module resolves its imports against the requested URL
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
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript, typescript
- Área
- frontend
Línea de trabajo
Empieza en loadRemoteModule en apps/web-bundle/src/loader.js, donde los imports hijos se resuelven con new URL(spec, url) contra la URL solicitada y no contra la respuesta. Revisa la búsqueda en remoteCache y la respuesta del fetch, y confirma cómo se gestiona el fallback de .ts. Está listo cuando los imports relativos se resuelven contra la URL final de la respuesta y la caché usa esa URL como clave, de modo que una redirección y su destino se carguen una sola vez.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happens
If a remote plugin's module is served by redirect, the browser resolves that module's relative imports against the URL that was requested rather than the one that answered, so they fetch the wrong paths.
Why
loadRemoteModule in apps/web-bundle/src/loader.js resolves children with new URL(spec, url), where url is the URL it asked for (or its .ts fallback), never res.url. A redirect is common on CDNs, e.g. unpkg answers https://unpkg.com/lit@3?module from https://unpkg.com/[email protected]/index.js?module=, and ./x.js from that file belongs under [email protected]/, not at the host root.
remoteCache is also keyed by the requested URL, so two URLs that redirect to one module load it twice.
Notes toward a fix
Resolve children against res.url, and key the cache by it, so a redirect and its target share one module. This matches how the browser treats a module it loads natively, and how Node resolves a URL import on the remote-url-identity branch.
Raw GitHub, the usual plugin host, does not redirect file requests, so this mostly affects plugins served from a CDN.
Found while reviewing #93.
- Lenguaje dominante
- TypeScript
- Estrellas
- 5
- Forks
- 2
- Merge medio
- 1 d 2 h
- PR fusionados (30 d)
- 12
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 MatAtBread/matbot
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
MatAtBread/matbot#94 ·
Los mantenedores suelen responder en 1 día
-
http: let a header value come from the Vault, so a keyed API needs no secret in the conversationAbiertoenhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 22/100
MatAtBread/matbot#104 ·
Los mantenedores suelen responder en 1 día
-
http: ToolContracts arm duplicates HttpInput inline — named references now expand on the wireAbierto
Dificultad 3/5 Medio día Aptitud para principiantes 66/100
MatAtBread/matbot#100 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
MatAtBread/matbot#96 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
MatAtBread/matbot#65 ·
Los mantenedores suelen responder en 1 día
Todos los issues de MatAtBread/matbot
Issues similares
-
fix(frontend): correct VITE_IS_DEVELPOMENT typo in shared/app.ts and align dev environment flagsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
vicharanashala/ajrasakha#1439 ·
Los mantenedores suelen responder en 1 día
-
Add: TV5Monde AsieAbiertoapproved check:passed streams:add
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
backnotprop/plannotator#1932 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 Medio día Aptitud para principiantes 62/100
ibm-granite/granite.build#504 ·
Los mantenedores suelen responder en 2 días
-
reproduced
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
anomalyco/opencode#55676 · 1 comentario ·
Los mantenedores suelen responder en 1 día