Ressources uniquement disponibles pour SCSS, pas pour JS

Bonjour,

Depuis environ une semaine, je personnalise une installation Discourse pour une marque, en y intégrant des polices fixes, des logos et des icônes.

Au début, j’ai remarqué que tous les actifs que j’importais (en les plaçant dans le dossier assets et en les important sous l’objet assets de about.json) étaient immédiatement disponibles en tant que variables SCSS, mais mettaient une minute ou deux à apparaître dans settings.theme_uploads.

Cependant, maintenant, ils n’apparaissent plus du tout dans settings.theme_uploads, ce qui m’empêche de les utiliser dans mon JavaScript. Si je supprime un actif, il reste toujours dans l’objet settings. L’utilisation SCSS, elle, reste inchangée.

Toute aide serait grandement appréciée.

Oui, je suis un peu confus par cela aussi.

À quel moment est-il sûr d’utiliser une référence comme return settings.theme_uploads.blah en javascript, si jamais ?

J’obtiens « undefined » pour settings.theme_uploads dans ma propriété calculée (initialement au moins).

Quel est le bon modèle ici ?

Les données settings.theme_uploads ont été ajoutées au javascript relativement récemment (après la rédaction de l’OP, je pense). Elles devraient être fiables - nous les utilisons dans nos propres thèmes/composants. Pouvez-vous expliquer plus en détail les problèmes que vous rencontrez ?

Ah, il me manquait le dossier des assets dans mon chemin vers l’asset, donc le lien brisé avait sans doute « optimisé » l’asset :

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

aurait dû être :

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

Doh !

Pour information, je référence ceci en Javascript dans un composant Ember, par exemple :

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

Cela lèverait une erreur undefined lorsque le chemin est incorrect !

Merci de m’avoir écouté ! @david, désolé d’avoir perdu votre temps.

@hakonbja, avez-vous résolu votre problème ?