Ресурсы доступны только в SCSS, а не в JS

Здравствуйте,

Последнюю неделю я настраиваю Discourse для бренда, включая фиксированные шрифты, логотипы и иконки.

Сначала я заметил, что любые импортированные мной ассеты (размещённые в папке assets и импортированные через объект assets в about.json) сразу становились доступны как переменные SCSS, но отображались в settings.theme_uploads только через минуту или две.

Однако теперь они вообще не появляются в settings.theme_uploads, из-за чего я не могу использовать их в JavaScript. Если я удаляю ассет, он всё равно остаётся в объекте settings. Использование в SCSS при этом не меняется.

Буду очень признателен за помощь.

Да, я тоже немного запутался в этом.

В какой момент (если вообще когда-нибудь) безопасно использовать ссылку вроде return settings.theme_uploads.blah в JavaScript?

В моём вычисляемом свойстве (по крайней мере, изначально) settings.theme_uploads возвращает undefined.

Какой здесь правильный паттерн?

Данные settings.theme_uploads были добавлены в JavaScript относительно недавно (после написания исходного сообщения, насколько я помню). Они должны быть надежными — мы используем их в собственных темах и компонентах. Не могли бы вы подробнее описать, с какими проблемами вы столкнулись?

Ах, я забыл добавить папку assets в путь к ресурсу, поэтому неработающая ссылка, несомненно, «оптимизировала» этот ресурс:

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

должно было быть:

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

Ой!

Кстати, я ссылаюсь на это в JavaScript в компоненте Ember, например:

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

При неверном пути это вызывало ошибку undefined!

Спасибо за внимание! @david, извините, что отнял ваше время.

@hakonbja, вы решили свою проблему?