Tenemos toda la lógica en su lugar para los sprites SVG en escenarios de subcarpetas, y varios sitios la utilizan con éxito. En este caso, nos hemos encontrado con un caso límite muy específico. Al verificar las variables clave en el sitio de @vkozyrev (en la consola del navegador):
> Discourse.SvgSpritePath
"/svg-sprite/sales-community-staging.rainmakers.co/svg-2-8ed106e6e3d908b1b86898dfe93a7bac0fd358f4.js"
> Discourse.BaseUri
"/sales-community"
Todo parece correcto. Ahora, al cargar la hoja de sprites SVG, usamos loadScript, que a su vez llama a Discourse.getURL. Esta función es la responsable de agregar el prefijo de la subcarpeta. Probémoslo:
> Discourse.getURL(Discourse.SvgSpritePath)
"/svg-sprite/sales-community-staging.rainmakers.co/svg-2-8ed106e6e3d908b1b86898dfe93a7bac0fd358f4.js"
Vaya… eso no hizo nada. Otra URL aleatoria funciona bien:
> Discourse.getURL("/blah")
"/sales-community/blah"
Una investigación más detallada revela esta línea dentro de getUrl:
if (url.indexOf(Discourse.BaseUri) !== -1) return url;
O, en español: “si la URL ya contiene el prefijo de la subcarpeta, no hacer nada”. Por lo tanto, el problema aquí es que el prefijo de la subcarpeta de @vkozyrev (/sales-community) está incluido en medio de la URL de la hoja de sprites SVG:
/svg-sprite/sales-community-staging.rainmakers.co/svg-2-8ed106e6e3d908b1b86898dfe93a7bac0fd358f4.js
He hecho la verificación más específica, de modo que solo verifica el prefijo de la subcarpeta al inicio de la URL:
Aunque esto me hace pensar en otros problemas potenciales… por ejemplo, si alguien quisiera que su prefijo de subcarpeta fuera /t o /about, o cualquier otra URL que usamos en Discourse ![]()