But I’d prefer storing library locally. Normally I’d use vendor.js to include it and have it loaded before the plugin code, but this approach needs hacking with the Discourse core… So what is recommended way and where to add external js library to plugin? Is there some convention? Thx.
Thanks… In the assets folder will it be loaded automatically or do I need to take care of asynchronous load as quoted in previous post? I need to load library before running plugin code.
I asked a similar question a few days ago (Existing JS module import into ES6 plugin). The problem I have is, that I want it included server side and I have no idea on which path I should require it in ES6 modules.
Entschuldigung, dass ich diesen Thread wiederbelebe, aber Google hat mich hierher geführt. Ich versuche seit ein paar Stunden, eine JS-Bibliothek in mein Plugin zu laden.
In meinem Ordner app/assets/javascripts befindet sich eine Datei namens argdown-core.js.
In meiner plugin.rb-Datei verwende ich register_asset 'javascripts/argdown-core.js'.
In assets/javascripts/discourse-markdown/argdown.js.es6 verwende ich import { argdown } from "argdown-core.js".
Ich habe viele Variationen davon ausprobiert und erhalte weiterhin den Fehler: Uncaught Error: Could not find module argdown-core.js imported from discourse/plugins/Argdown/discourse-markdown/argdown.
Einige der Dinge, die ich versucht habe:
Die Datei in verschiedene Ordner verschoben
Viele Permutationen der import-Zeile ausprobiert
Die Endung .es6 an die Dateierweiterung angehängt – andere JS-Dateien scheinen das zum Ausführen zu benötigen
:server_side ans Ende meiner register_asset-Zeile in plugin.rb gesetzt, da dies dort ausgeführt werden sollte
Nach anderen Plugins gesucht, die Bibliotheken von Drittanbietern verwenden – konnte keine finden, die Strategien nutzen, die ich nicht bereits verwende
Durch den Discourse-Code gegraben, um das Bounding-System zu verstehen
Das ist wahrscheinlich einfach und ich übersehe etwas Offensichtliches. Kann mir jemand helfen?
Außerdem ein kleiner Tipp: Beim Programmieren wirken Dinge oft schwierig, wenn man das Gefühl hat, die Auswirkungen des eigenen Handelns nicht zu kennen. Es ist wichtig zu wissen, was vor sich geht. Ich empfehle dir, folgenden Befehl in deiner Konsole auszuführen: window.requirejs.entries. Das könnte dir helfen, einige Dinge besser zu verstehen.
Vielen Dank, das ist sehr hilfreich! Das Unterbringen meiner Bibliothek im Ordner assets/lib bringt bereits viel.
Jetzt, wo ich den korrekten Pfad habe, verhält sich die Bibliothek merkwürdig. Es ist eine große Bibliothek mit vielen Submodulen – argdown.js benötigt ArgdownApplication.js und einige weitere. Beim Versuch, ArgdownApplication.js zu laden, erscheint die Meldung: „Uncaught ReferenceError: exports is not defined.