Discourse funktioniert nach Serverwechsel nicht mehr

Unsere Discourse-Instanz wird seit vielen Jahren auf Digital Ocean gehostet, bis zu dem Punkt, an dem Probleme auftraten, da wir noch auf Ubuntu 18 liefen. Daher habe ich ein neues Droplet mit einer frischen Discourse-Installation erstellt, es eingerichtet und dann das neueste Backup von dem alten Droplet heruntergeladen und wiederhergestellt. Dabei traten keine Fehler auf.

Nach der Anmeldung an der neuen Instanz sieht es jedoch so aus:

Und die Konsole gibt mir Folgendes aus:

Uncaught SyntaxError: unexpected token: private identifier
admin-13326e7ca61effcc233d500e3263c63074c9823b7e1d0c1680b6f68e23565d5a.js:76:99
ℹ️ Discourse v3.3.0.beta2-dev — https://github.com/discourse/discourse/commits/2a2eaf835f — Ember v5.5.0 app.js:213
Uncaught (in promise) Error: There is no route named admin
    handlersFor https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    isActiveForRoute https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    isActiveForState https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    get isActive https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    get class https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Re https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    a https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    tag https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    track https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    d https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Ke https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    tag https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    track https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    d https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Je https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    flush https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    <anonymous> https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluate https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluateSyscall https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluateInner https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluateOuter https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    next https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _execute https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    execute https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    sync https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    render https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRoots https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Nt https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRoots https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRootsTransaction https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRoot https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _appendDefinition https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    appendOutletView https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    invoke https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    flush https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    flush https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _end https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _boundAutorunEnd https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9:384138

Ich wäre dankbar für jeden Vorschlag, wo ich mit der Fehlersuche beginnen kann. Danke!

1 „Gefällt mir“

Können Sie versuchen, Ihre Website im Sicherheitsmodus aufzurufen, um zu sehen, ob sie geladen wird?

1 „Gefällt mir“

Ich habe das getan. Es sieht identisch aus und ich bekomme dieselben Fehler.

Oh, außerdem habe ich gerade versucht, mich mit einem anderen Konto ohne Admin- oder Moderatorberechtigungen anzumelden, und es funktioniert, soweit ich das beurteilen kann. Ich habe Zugriff auf drei verschiedene Arten von Konten, und hier sind die Ergebnisse meiner Experimente:

  • Admin-Konto → kaputt
  • Moderatorenkonto (mit eingeschränktem Zugriff auf das Admin-Dashboard) → kaputt
  • normales Konto → funktioniert einwandfrei

Das Problem scheint nur aufzutreten, wenn das Seitenmenü den Link “Admin” enthält, da dieser direkt unter dem Element “Review” im obigen Screenshot erscheinen würde. Vielleicht hilft das?

Außerdem, falls es wichtig ist, war die alte Instanz, von der ich das Backup gemacht habe, nicht auf dem neuesten Discourse. Ich glaube, sie war auf etwas wie 3.1.2. Die neue Instanz ist natürlich auf dem neuesten Stand.

Das Problem ist, dass ein Syntaxfehler in einer der Admin-JavaScript-Dateien vorliegt, was dazu führt, dass die Route admin nicht registriert wird.

Können Sie in der Konsole die Datei erweitern oder darauf zugreifen, in der der Syntaxfehler ausgelöst wird? Die Informationen sind im Moment etwas begrenzt, als dass wir sagen könnten, was falsch ist.

Sicher, obwohl es sich nur um eine zusammenhängende Zeile minifizierten Javascripts handelt. Ich habe versucht, das Ganze hier einzufügen, aber es überschreitet die zulässige Zeichenanzahl. Ich habe ein Online-Unminify-Tool verwendet und den Codeblock identifiziert, der den Fehler auslöst.

(P.prototype.handlersFor = function (e) {
    var t = this.names[e];
    if (!t) throw new Error("There is no route named " + e);
    for (var r = new Array(t.handlers.length), n = 0; n < t.handlers.length; n++) {
        var i = t.handlers[n];
        r[n] = i;
    }
    return r;
}),

Hilft das, oder muss ich einen Weg finden, die gesamte Datei zu posten?

Verwenden Sie Cloudflare mit der orangefarbenen Wolke? Wenn ja, deaktivieren Sie diese.

2 „Gefällt mir“

Ich habe ein ähnliches Problem, das heute oder gestern zu beginnen scheint. Meine Admin-Routen funktionieren nicht und ein Menü ist kaputt.

Uncaught (in promise) Error: There is no route named admin

Ich habe dieses Thema gefunden, als ich nachgesehen habe, ob noch jemand ein Problem mit Cloudflare hat.

Wenn ich den Cloudflare-Cache lösche oder den Entwicklermodus aktiviere, verschwindet das Problem, aber sobald das Caching beginnt, tritt es wieder auf.

Bearbeiten: Ich bin mir nicht sicher, ob dies damit zusammenhängt, aber dies sind einige der Fehler in der Konsole, wenn ich als Administrator angemeldet bin.

Hier ist die Codezeile:

class d extends t.default{static#e=dt7948.g(this.prototype,\"currentUser\",[a.service])#t=void dt7948.i(this,\"currentUser\")

Mein Menü bricht hier ab:

Der Fehler „no route named admin“ tritt auf, wenn ich dieses Menü öffne. Es könnte dort abgeschnitten sein, wo der Link „admin“ wäre.

Sie sollten alle Regeln in Cloudflare deaktivieren, einschließlich Rocket Launcher und allem WAF.

Wenn Sie Ihre Cloudflare-Konfiguration sauber halten, verursacht sie keine Probleme mit Discourse.

Rocket Loader ist auf dieser Website deaktiviert. Ich glaube nicht, dass kürzlich Änderungen an den Cloudflare-Einstellungen vorgenommen wurden. (Ich habe gerade die Audit-Logs überprüft.)

@Ryan_Hyer Ich betrachte erneut Ihren Screenshot. Schneidet er genau dort ab, wo der Admin-Menüpunkt erscheinen würde? Das ist dieselbe Stelle, an der es auf meiner Website passiert.

Wenn Sie Dinge wie WAF aktiviert haben, könnte Cloudflare auch Änderungen an seinem internen Verhalten vornehmen, die Ihre Website beeinträchtigen könnten.

Stellen Sie außerdem sicher, dass die Funktion „Auto-Minify“ von Cloudflare deaktiviert ist und Sie den Cache geleert haben.

Sie haben die Funktion ausgemustert, da sie für moderne JS-Funktionen (die Discourse jetzt verwendet) nicht funktioniert.

1 „Gefällt mir“

Wir haben die Änderung aufgrund von Problemen mit Cloudflare und Safari 15 rückgängig gemacht.

Wenn Sie also @Ryan_Hyer Discourse erneut aktualisieren, sollte alles wieder normal sein.

(aber dennoch empfehle ich dringend, alle JavaScript-„Optimierungs“-Funktionen von Cloudflare wie Rocket Loader und Auto-Minify zu deaktivieren)

3 „Gefällt mir“

Danke! Git pull sagt, ich bin bereits auf dem neuesten Stand, also ist die Änderung noch nicht verfügbar?

Ich glaube, wir nutzen Cloudflare nur für DNS und DDOS-Schutz, sonst nichts. Aber ja, wir hatten die orangefarbene Wolke aktiviert. Ich habe sie gerade ausgeschaltet und meine Seite scheint unbeschädigt zu sein, großartig! Danke Leute!

2 „Gefällt mir“

Diese orangefarbene Wolke ohne jegliche Anpassungen von den Standardeinstellungen bedeutet im Wesentlichen „Break my site“.

Wir haben eine Anleitung, was konfiguriert werden muss, wenn Sie es verwenden.

1 „Gefällt mir“

Danke, das war’s. Ich habe die automatische Minifizierung deaktiviert, den Cache geleert, einen Hard-Refresh durchgeführt und die Dinge funktionierten wieder.

3 „Gefällt mir“

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