Include assets (e.g. images, fonts) in themes and components ainda parece se referir à maneira Handlebars de fazer as coisas, se estou entendendo corretamente. A nova maneira Glimmer já está disponível para tornar as imagens do diretório assets do componente de tema utilizáveis em um HTML(-template) do mesmo componente de tema?
[THEME 6 'geowebforum-sponsors'] Error: [THEME 6 'geowebforum-sponsors'] Compile error: SyntaxError: /theme-6/discourse/api-initializers/geowebforum-sponsors.gjs: Attempted to resolve a helper in a strict mode template, but that value was not in scope: theme-relative-url:
no console do navegador.
Eu também tentei várias combinações de:
retirar o template para uma constante
chaves curly simples (em vez de duplas)
usar uma chamada de função (themeRelativeUrl("asseco_berit.jpg")) dentro das chaves curly
mover o template para javascripts/discourse/components/geowebforum-sponsors.gjs (e importá-lo do inicializador)
mover o template para javascripts/components/geowebforum-sponsors.gjs (e importá-lo do inicializador)
introduzir uma class GEOWebforumSponsorsComponent extends Component {} nesse arquivo e importá-la no inicializador (enquanto exporta o template do mesmo arquivo como a classe sob o nome template, como um LLM havia me sugerido – ainda não tenho certeza se isso faria algum sentido.)
Eu obtive ou
o mesmo erro (embora daquele outro arquivo)
ou
klass is not an Ember component
ou
placeholders de template literais no DOM resultante, levando naturalmente a 404s nas fontes das imagens
Nos templates, nem expressões JavaScript arbitrárias (como chamadas de função) nem expressões de filtro (do tipo alguma-funcao-de-transformacao algumaVariavelOuLiteral) funcionam nas chaves duplas. Apenas variáveis únicas podem ser interpoladas lá.
Para um dos dois assets, eu havia esquecido de incluir o nome do diretório assets/ no valor do caminho do arquivo correspondente em about.json. Isso falhou silenciosamente, resultando na configuração correspondente ser undefined, o que suponho que fez com que todo o template fosse omitido silenciosamente ou algo assim.
Em um momento durante o desenvolvimento, o componente de tema sincronizado por discourse_theme watch ... não teve efeito, seja na pré-visualização ou ativado explicitamente. Fazer o discourse_theme watch ... criar uma nova cópia do componente na instância (e excluir a cópia anterior) resolveu isso. Não tenho certeza exatamente o que aconteceu ali.
Você verificou o console do navegador? Erros no seu componente são reportados lá e, se houver erros, seu componente não aparecerá (ou aparecerá incompleto).