Recursos disponibles solo para SCSS, no para JS

Hola,

Durante la última semana aproximadamente, he estado personalizando una instalación de Discourse para una marca, lo que incluye tipografías fijas, logotipos e iconos.

Al principio, noté que cualquier activo que importaba (colocado en la carpeta assets e importado bajo el objeto assets de about.json) estaba disponible inmediatamente para usar como variable SCSS, pero tardaba uno o dos minutos en aparecer en settings.theme_uploads.

Ahora, sin embargo, no aparecen en absoluto en settings.theme_uploads, lo que significa que no puedo usarlos en mi JavaScript. Si elimino un activo, este también permanece en el objeto de configuración. El uso en SCSS sigue sin verse afectado.

Agradecería mucho su ayuda.

Sí, yo también estoy un poco confundido por esto.

¿En qué momento es seguro usar una referencia como return settings.theme_uploads.blah en javascript, si es que alguna vez lo es?

Estoy recibiendo “undefined” para settings.theme_uploads en mi propiedad calculada (inicialmente, al menos).

¿Cuál es el patrón correcto aquí?

Los datos de settings.theme_uploads se agregaron a javascript relativamente hace poco (después de que se escribió el OP, creo). Debería ser confiable; lo usamos en nuestros propios temas/componentes. ¿Puedes explicar con más detalle qué problemas estás viendo?

Ah, me faltaba la carpeta de assets en mi ruta al asset, así que el enlace roto seguramente “optimizó” el asset:

{
  "name": "Cool Theme Component",
  "about_url": "",
  "component": true,
  "assets": {
    "background": "background.png"
  }
}

debería haber sido:

{
  "name": "Cool Theme Component",
  "about_url": "",
  "component": true,
  "assets": {
    "background": "assets/background.png"
  }
}

¡Doh!

Para tu información, lo estoy referenciando en Javascript en un Ember Component, por ejemplo:

  @computed
  backgroundImage() {
    return settings.theme_uploads.background;
  }

¡Eso generaría un error undefined cuando la ruta es incorrecta!

¡Gracias por escuchar! @david, lamento hacerte perder el tiempo.

@hakonbja, ¿resolviste tu problema?