web-bundle: a root-relative import from a remote plugin fails in the browser
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
- 70/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript
- Área
- frontend
Línea de trabajo
Empieza en apps/web-bundle/src/loader.js, donde loadRemoteModule omite cualquier specifier que no sea ./ o ../ (la comprobación isRelative). Compáralo con el hook de Node en apps/cli/remote-loader.js, que resuelve los specifiers relativos a la raíz contra el origin del plugin. Está terminado cuando un import relativo a la raíz, como /lib/x.js, en un plugin cargado en el navegador se resuelve contra la URL de origen del módulo y se carga mediante loadRemoteModule, mientras que los specifiers absolutos https: permanecen sin cambios y ambos hosts coinciden.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happens
A remote plugin loaded in the browser whose own source imports a root-relative specifier (import x from '/lib/x.js') fails to load. The same plugin loads on Node.
Why
loadRemoteModule in apps/web-bundle/src/loader.js rewrites only ./ and ../ specifiers to their children's blob URLs; anything else is left for the browser (if (!isRelative(spec)) return null). The module itself runs from a blob: URL, and a blob: base cannot resolve any relative reference:
new URL('/x.js', 'blob:http://localhost:8080/0b6e-uuid') // throws ERR_INVALID_URL
Node's hook (apps/cli/remote-loader.js) resolves a root-relative specifier against the plugin's origin, so the two hosts disagree.
Notes toward a fix
Treat a specifier starting with / (but not //) like a relative one: new URL(spec, url) against the module's source URL, then load it through loadRemoteModule. An absolute https: specifier must stay untouched, as now; that is what gives a CDN module its real URL as identity.
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
-
http: ToolContracts arm duplicates HttpInput inline — named references now expand on the wireAbiertofuture-enhancement
Dificultad 3/5 Medio día Aptitud para principiantes 66/100
MatAtBread/matbot#100 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
future-enhancement
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
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
jbacalso24/mimry#459 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
architecture help wanted hive/claimed-by-architect origin/architect stage/030-pr-in-progress tech-debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
kubestellar/console#24422 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area: backends type: docs
Dificultad 1/5 1-3 horas Aptitud para principiantes 83/100
schlessera/brain-kit#2383 ·
Los mantenedores suelen responder en 1 día
-
agent duplicate providers tool triaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día