Absolut, Code wäre hier sehr hilfreich. Vielleicht forken Sie Discourse und pushen dann Ihre Änderungen in einen Branch, dann kann ich die Änderungen von Ihrem Branch in den PR übernehmen.
Ich freue mich sehr, dass Sie Fortschritte machen und versuchen, dieses Problem zu diagnostizieren.
Können Sie auch den neuesten Stand ziehen? Ich habe eine Runde Bereinigung durchgeführt.
Seien Sie jedoch gewarnt, ich habe nicht direkt von Ihrem letzten Commit aus gearbeitet. Ich habe direkt von Discourse main begonnen und von dort aus Änderungen vorgenommen. Daher habe ich viel von Ihrer Arbeit gelernt, aber die Gesamtstruktur ist anders.
Ich denke, Sie könnten den Hauptunterschied wie folgt zusammenfassen: Während Sie (natürlich) Discourse-Funktionen verwenden, die von Ember geerbt wurden, um die Zeitpunkte im Zusammenhang mit dem Laden und Setzen zu koordinieren, verwende ich MathJax-Funktionen. Daher sind meine load-mathjax und mathjax-Bundles (eines für SVG und eines für CHTML) viel einfacher als Ihre. Das Laden wird vollständig über das window.MathJax-Objekt in discourse-math-mathjax koordiniert.
Ich habe immer noch dasselbe Problem, das ich zuvor beschrieben habe, nämlich dass dieser auskommentierte Loader nicht funktioniert; ich muss stattdessen diese CDN-Version verwenden. Ich weiß wirklich nicht warum.
Ich denke, Ihr Code leidet unter demselben Problem. Deshalb scheint AsciiMath nicht zu funktionieren.
Können Sie meinen letzten Commit noch einmal überprüfen? Ich glaube, ich habe einen Funnel für Ember hinzugefügt, sodass der Ember-Build jetzt alle Dateien an die richtige Stelle legt.
OK, ich habe sehr gute Nachrichten und einige frustrierende Nachrichten.
Erstens, du hast absolut recht, dass das Hinzufügen des Funnels diese Dateien an die richtige Stelle legt. Ich habe den Funnel zu meinem Branch hinzugefügt und es funktioniert jetzt großartig ohne die CDN-Abhängigkeit.
Leider kann ich deinen Code im Moment nicht ausführen. Immer wenn ich zu einer Seite mit Mathematik navigiere, wird die Mathematik nicht gesetzt und ich sehe die folgende Fehlermeldung in der Konsole:
Uncaught (in promise) Error: State EXPLORER already exists
Ich bin mir sicher, dass dein Code vorher funktioniert hat, also nehme ich an, es liegt an etwas, das ich getan habe. Um es klarzustellen: Ich habe buchstäblich ein komplett neues Verzeichnis mit den in Install Discourse on macOS for development beschriebenen Techniken erstellt.
git clone https://github.com/discourse/discourse.git ./discourse
cd ./discourse
bundle install
pnpm install
bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate
# In einem Terminal
bundle exec rails server
# In einem anderen Terminal
bin/ember-cli
geholt. Selbst mit dieser frischen Einrichtung erhalte ich den Fehler.
An diesem Punkt bin ich mit meiner Version des Codes ziemlich zufrieden, aber immer noch neugierig, was bei deiner Version vor sich geht. Ich muss das für die Feiertage pausieren. Ich schaue aber gerne in ein paar Tagen noch einmal darauf.
Ein letzter Punkt noch: Soweit ich weiß,
await import("tex-mml-chtml.js") // gefolgt von
await import("input/asciimath.js")
sollte nicht funktionieren, was effektiv das ist, was dein Code tut, glaube ich.
Ich bin bei den Pfaden ungenau, aber mein Punkt ist, dass ich nicht weiß, ob aufeinanderfolgende dynamische Aufrufe von import zur korrekten MathJax-Struktur führen. Ich denke, das Laden von MathJax-Komponenten ist ziemlich kompliziert, und deshalb haben sie diesen detaillierten Ladevorgang mit dem MathJax-Objekt und allem.