Leere Website nach Update

Hallo,

ich habe unser Discourse-Forum gerade aktualisiert, und es ist nun leer (Startseite und Admin-Bereich). Das HTML sieht in Ordnung aus, die RSS-Feeds funktionieren.

Ich habe JS-Fehler gefunden, die auf unser Theme zurückzuführen sind. Kann das Problem von dort stammen?
Capture d’écran 2020-08-22 à 15.57.03

Wie kann ich das beheben? Kann ich den JS-Code meines Themes über die CLI ändern/deaktivieren? Oder ein neues Theme installieren?

Edit: Ich habe kein anderes Theme installiert, daher kann ich ?preview_theme_id= nicht verwenden.

Hey @CamilleRoux

Du kannst das Standardthema auch direkt in der Datenbank mit SQL ändern, wenn du dich mit direkten Datenbankabfragen auskennst.

HTH

Hast du Wie man den Discourse-Sicherheitsmodus verwendet ausprobiert?

Was machst du gerade :thinking: ?

  • Sicherheitsmodus prüfen: https://forum.humancoders.com/?safe_mode=no_custom%2Cno_plugins%2Conly_official

  • Protokolle https://forum.humancoders.com/logs (privat?)

Versuche es per SSH mit folgendem Befehl:

cd /var/discourse
git pull
./launcher rebuild app

Der Sicherheitsmodus funktioniert nicht … derselbe Fehler:

ReferenceError: Discourse ist nicht definiert
    bei https://forum.humancoders.com/assets/start-discourse-efa4e5abfbd1b50b5152ffbe64d5dcea9f7c33f766dcc6387e2711f0f2112148.js:1:1

Ich habe bereits einen Neustart durchgeführt: ./launcher rebuild app

Ich habe keine anderen Themen installiert, also müsste ich entweder ein neues Thema über die CLI installieren oder das vorhandene ändern. Ich weiß nicht, wie das geht.

OH, also dein Standardthema enthält defekte Elemente, sodass es keine Möglichkeit gibt, es zu deaktivieren? Wenn das passiert ist, dann ist das der Grund, warum du solche Anpassungen immer in Theme-Komponenten vornehmen solltest (obwohl dies nicht der hilfreichste Moment ist, dir das zu sagen!). (Aber ich bin mir nicht ganz sicher, ob das der Fall ist).

Und du hast keine Plugins von Drittanbietern?

Ich vermute, was du vielleicht tun musst, ist, in der Rails-Konsole ein neues leeres Theme zu erstellen und dann das Standardthema auf das neue Theme umzustellen. Ich weiß im Moment nicht genau, wie man das macht.

Ich bin mir noch nicht ganz sicher, ob das Problem vom Theme stammt. Aber falls doch, könnte das Erstellen eines leeren Themes und das Setzen als Standard das Problem lösen. Ich weiß nur nicht, wie das geht :frowning:

Ich auch nicht. :man_shrugging:

Ich auch nicht. Ich glaube, ich könnte es herausfinden, aber ich habe eine Menge bezahlter Arbeit, die ich am Wochenende nicht erledigen möchte.

Hallo @CamilleRoux,

ich habe deine Seite gerade für dich überprüft, indem ich den UA-String in der Entwicklertool-Konsole auf Google Bot gesetzt habe. Dadurch wird die reine Rails-Seite ohne das Ember-SPA angezeigt.

Du kannst sehen, dass deine Seite aus Rails-Sicht „OK“ ist. Das bedeutet, dass dein Container einwandfrei läuft und, wie du bereits vermutet hast, ein JavaScript-Problem in deinem Theme (Komponente) vorliegt.

Siehe Anhang:

@CamilleRoux

Kannst du eine psql-Eingabeaufforderung öffnen (oder bei Bedarf die Rails-Konsole verwenden) und folgende Abfragen ausführen?

Lass uns prüfen, wie viele Themes installiert sind:

discourse=# select count(*) from themes;
 count 
-------
    22
(1 row)

Lass uns prüfen, welche Theme-ID aktuell als Standard festgelegt ist:

discourse=# select value from site_settings where name = 'default_theme_id';
 value 
-------
 3
(1 row)

Kannst du zusätzlich diese Abfrage ausführen?

discourse=# select id, name, component, enabled from themes;
 id |           name            | component | enabled 
----+---------------------------+-----------+---------
  3 | Light                     | f         | t
  6 | Minima                    | f         | t
  7 | Hamburger Theme Selector  | t         | t
  2 | Material Dark             | f         | t
  8 | Vincent                   | f         | t
  5 | Material                  | f         | t
  9 | Simple                    | f         | t
 10 | Graceful Wide             | f         | t
 11 | Dark Wide                 | f         | t
 14 | Alien Night               | f         | t
 39 | md-composer-extras-neo    | t         | t
 40 | Plugin Outlets            | t         | f
 15 | User Card Directory       | t         | f
 41 | Raw Post Button           | t         | t
  4 | Graceful                  | f         | t
  1 | Dark for GSE              | f         | t
 42 | Dark                      | f         | t
 43 | discourse gifs            | t         | t
 44 | Cookie Consent Banner     | t         | t
 46 | Graceful Edits            | t         | t
 45 | Neo Stuff Scratch Sheets  | t         | t
 48 | Unformatted Code Detector | t         | t

Übrigens,

@CamilleRoux

Ich habe das gerade für dich getestet.

Nachdem du die Abfragen in meinem Beitrag oben ausgeführt hast, um alle deine Themes aufzulisten (und du einen Überblick über den aktuellen Zustand deiner Themes hast), kannst du, sofern du Zugriff auf deine Datenbank hast und diese Abfrage entweder über Rails oder direkt in psql ausführen kannst, Folgendes versuchen:

Abfrage zum Deaktivieren aller Theme-Komponenten

discourse=#  update themes set enabled = false where component = true;

Die obige Abfrage deaktiviert alle deine Theme-Komponenten.

Anschließend kannst du beobachten, “was passiert”, wenn du versuchst, auf deine defekte Seite zuzugreifen.

Wenn ich in deiner aktuellen Situation wäre und basierend auf der Überprüfung deiner Seite als Bot-User-Agent, würde ich alle Theme-Komponenten deaktivieren.

Tatsächlich würde ich sie nacheinander deaktivieren, beginnend mit jeder Theme-Komponente, die mit Navigationslinks zu tun hat (siehe JS-Fehler unten als Ausgangspunkt); denn ich bin mit direkten SQL-Datenbankabfragen vertraut und habe damit Erfahrung. Hast du fundierte SQL-Kenntnisse?

Wenn du damit nicht vertraut bist, kannst du mir eine Nachricht schreiben und mir Zugriff gewähren. Ich werde dir helfen, diese “nicht so gute Situation” zu überwinden. Ich bin ziemlich sicher, basierend auf den Informationen, die ich derzeit habe, dass ich dir helfen kann, wieder hochzufahren und betriebsbereit zu sein :slight_smile:

Siehe auch deinen JS-Fehler:
Discourse.ExternalNavItem=Discourse.NavItem.extend({href:function(){return this.get('href');}.property('href')});I18n.translations.fr.js.filters.formations={title:"Formations",help:"Formations pour développeur·se·s"};Discourse.NavItem.reopenClass({buildList:function(category,args){var list=this._super(category,args);list.push(Discourse.ExternalNavItem.create({href:'https://www.humancoders.com/',name:'formations'}));return list;}});jQuery(function($){$(document).on("ready",function(){if(Cookies.get('hcFirstPage')==undefined){$(document).on('click','.toggle-menu',function(e){e.preventDefault();$('.main-nav').toggleClass('show');});var tweenBounce=TweenMax.to('#topbar',1.2,{maxHeight:"50px",delay:2,ease:Power1.easeInOut});var tweenBounceBack=TweenMax.to('#topbar',1.2,{maxHeight:"4px",delay:5.5,ease:Power1.easeInOut});Cookies.set('hcFirstPage',true,{expires:.04});}else{var tweenBounce=TweenMax.to('#topbar',0);}
window.addEventListener('unload',function(){Cookies.remove('hcFirstPage');});var tweenOpen,tweenClose;$('.topbar-toggle').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar-zone-click').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar-zone-click').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});$('.topbar-toggle').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});$('#topbar').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});});});

OK, danke an euch alle für eure Hilfe.
Es handelt sich um eine alte Installation, und ich hatte kein anderes Theme oder andere Komponenten installiert. Daher konnte man mein Theme nicht ändern oder alle Komponenten deaktivieren.
Also habe ich ein altes Backup wiederhergestellt, mein Theme aktualisiert und dann Discourse aktualisiert. Es ist besser, aber ich habe immer noch einen Fehler (vorher waren es zwei).

Hier ist der Fehler:

Uncaught ReferenceError: Discourse is not defined
<anonymous> /assets/start-discourse-efa4e5abfbd1b50b5152ffbe64d5dcea9f7c33f766dcc6387e2711f0f2112148.js:1

Hier ist der Inhalt dieser Datei:

Discourse.start();

Habe ich eine alte Version des Standard-Themes? (Das aktuelle Theme wurde 2016 erstellt, indem einfach etwas CSS und JS zum Standard-Theme hinzugefügt wurde.)

PS: Die Website läuft wieder, da ich das Backup ohne Aktualisierung von Discourse verwende.

Dann würde ich meiner Meinung nach ein neues generisches Theme erstellen und als Standard festlegen, dann das Upgrade durchführen und mein Theme reparieren.

Kleines Update: Der Fehler tritt bei einigen Versionen von Discourse auf, aber nicht bei allen.
Bei stable und tests-passed funktioniert es einwandfrei, jedoch nicht bei beta. Ich gebe also zu, dass der Fehler bereits behoben wurde, aber noch nicht in beta übernommen wurde.

Aber bezieht sich das Problem auf deine Theme-Anpassung oder auf das Standard-Theme?

Mit dem aktuellen Beta habe ich denselben Fehler, egal welches Theme verwendet wird.