Asset disponibili solo per SCSS, non per JS

Ciao,

Da circa una settimana sto personalizzando un’istanza di Discourse per un brand, includendo font fissi, loghi e icone.

Inizialmente ho notato che tutte le risorse che importavo (posizionate nella cartella assets e importate sotto l’oggetto assets di about.json) diventavano immediatamente disponibili come variabili SCSS, ma richiedevano un minuto o due per apparire in settings.theme_uploads.

Ora, invece, non compaiono affatto in settings.theme_uploads, il che significa che non posso utilizzarle nel mio JavaScript. Se rimuovo una risorsa, questa rimane comunque nell’oggetto settings. L’utilizzo SCSS, invece, rimane invariato.

Apprezzerei molto un aiuto in merito.

Sì, anch’io sono un po’ confuso da questo.

Quando è sicuro usare un riferimento come return settings.theme_uploads.blah in javascript, se mai lo è?

Sto ottenendo “undefined” per settings.theme_uploads nella mia computed property (inizialmente almeno).

Qual è il pattern corretto qui?

I dati di settings.theme_uploads sono stati aggiunti a javascript relativamente di recente (penso dopo che l’OP è stato scritto). Dovrebbe essere affidabile: lo usiamo nei nostri temi/componenti. Puoi spiegare più in dettaglio quali problemi stai riscontrando?

Ah, mi mancava la cartella assets nel mio percorso all’asset, quindi il link interrotto avrà “ottimizzato” l’asset senza dubbio:

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

avrebbe dovuto essere:

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

Doh!

Per tua informazione, sto facendo riferimento a questo in Javascript in un Ember Component, ad esempio:

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

Questo genererebbe un errore undefined quando il percorso è errato!

Grazie per aver ascoltato! @david, mi dispiace aver sprecato il tuo tempo.

@hakonbja hai risolto il tuo problema?