Discourse-Kommentare in Vuejs

Ich habe eine Website, die Vue.js verwendet, und ein Forum in Discourse. Ich versuche, ein JavaScript in die Template-Datei einzufügen, das Kommentare aus dem Forum mit einer bestimmten Seite auf meiner Vue.js-Website verbindet. Dabei erhalte ich jedoch den Fehler:

Templates sollten ausschließlich dafür verantwortlich sein, den Zustand auf die Benutzeroberfläche abzubilden.
Vermeiden Sie es, Tags mit Seiteneffekten in Ihren Templates zu platzieren, wie z. B. <script>,
da diese nicht geparst werden.

Ich habe versucht, text/javascript in application/javascript zu ändern, aber beim Rendern erhalte ich folgenden Fehler:

 - ungültiger Ausdruck: fehlende ) nach Argumentliste in

" \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"

  Rohausdruck: 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  })();

Meines Wissens nach ist die Verwendung von JS-Dateien in Vue.js nur von der Domäne erlaubt, von der aus der Aufruf stammt. Mein Forum ist jedoch auf einer Subdomain eingerichtet.

Wie kann ich diesen Fehler beheben? Sollte ich vielleicht einen anderen Teil des Codes verwenden?

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 „Gefällt mir“

Ich hatte dasselbe Problem und nach einigem Tüfteln hier ist eine mögliche Lösung für Single-Page-Anwendungen: Embed comments from Discourse in your single page app

Dieses Thema wurde 30 Tage nach der letzten Antwort automatisch geschlossen. Neue Antworten sind nicht mehr möglich.