Comentários do Discourse no Vuejs

Tenho um site que usa Vue.js e um fórum no Discourse. Estou tentando inserir um script JavaScript no arquivo de template que conecte os comentários do fórum a uma página específica do site Vue.js, mas estou recebendo o erro:

Templates devem ser responsáveis apenas por mapear o estado para a UI.
Evite colocar tags com efeitos colaterais em seus templates, como <script>,
pois elas não serão analisadas.

Tentei alterar text/javascript para application/javascript, mas ao tentar renderizar, recebo o seguinte erro:

 - expressão inválida: falta ')' após a lista de argumentos em

" \n  DiscourseEmbed = { discourseUrl: 'https://forum.epicseven.ru/',\n                     \ndiscourseEmbedUrl: '\"+_s(url absolute=\"true\")+\"' };\n\n  (function() {\n    \nvar d = document.createElement('script'); d.type = \n'application/javascript'; d.async = true;\n    d.src = \nDiscourseEmbed.discourseUrl + 'javascripts/embed.js';\n    \n(document.getElementsByTagName('head')[0] || \ndocument.getElementsByTagName('body')[0]).appendChild(d);\n  })();\n"

  Expressão bruta: DiscourseEmbed = { discourseUrl: \n'https://forum.epicseven.ru/',\n                 discourseEmbedUrl: '{{url absolute=\"true\"}}' };\n\n  (function() {\n    var d = document.createElement('script'); d.type = \n'application/javascript'; d.async = true;\n    d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';\n    (document.getElementsByTagName('head')[0] || \ndocument.getElementsByTagName('body')[0]).appendChild(d);\n  })();

Pelo que entendi, o uso de arquivos JS no Vue.js é permitido apenas a partir do domínio de onde a chamada se origina. E meu fórum está configurado em um subdomínio.

Como posso corrigir esse erro? Talvez eu deva tentar usar outra parte do código?

The embedding code we provide is meant for static sites, not client side rendered (SPAs) like Vue/React/Ember/Angular.

You will have to look into another method of obtaining the data from Discourse. We do offer a full API but you might have to proxy it through your own server to avoid cross domain requests.

3 curtidas

Tive o mesmo problema e, após algumas tentativas, aqui está uma possível solução para aplicações de página única: Embed comments from Discourse in your single page app

Este tópico foi fechado automaticamente 30 dias após a última resposta. Novas respostas não são mais permitidas.