Site web vide après la mise à jour

Bonjour,

Je viens de mettre à jour notre forum Discourse et il est maintenant vide (page d’accueil et administration). Le HTML semble correct et les flux RSS fonctionnent.

J’ai trouvé des erreurs JavaScript dues à notre thème. Le problème peut-il venir de là ?
Capture d'écran 2020-08-22 à 15.57.03

Comment puis-je résoudre cela ? Puis-je modifier ou désactiver le code JavaScript de mon thème via l’interface de ligne de commande (CLI) ? Ou dois-je installer un nouveau thème ?

Édit : Je n’ai aucun autre thème installé, donc je ne peux pas utiliser ?preview_theme_id=

1 « J'aime »

Salut @CamilleRoux,

Tu peux aussi modifier le thème par défaut directement dans la base de données avec du SQL, si tu es à l’aise avec les requêtes SQL directes.

Cela devrait t’aider.

1 « J'aime »

Avez-vous essayé Comment utiliser le mode sans échec de Discourse ?

2 « J'aime »

Que faites-vous :thinking: ?

  • Vérifiez le mode sans échec : https://forum.humancoders.com/?safe_mode=no_custom%2Cno_plugins%2Conly_official

  • Journaux https://forum.humancoders.com/logs (privés ?)

Essayez via SSH d’exécuter ceci :

cd /var/discourse
git pull
./launcher rebuild app
3 « J'aime »

Le mode sécurisé ne fonctionne pas… même erreur :

ReferenceError: Discourse is not defined
    at https://forum.humancoders.com/assets/start-discourse-efa4e5abfbd1b50b5152ffbe64d5dcea9f7c33f766dcc6387e2711f0f2112148.js:1:1

J’ai déjà effectué une reconstruction ./launcher rebuild app

Je n’ai pas d’autres thèmes installés, je devrais donc en installer un nouveau via l’interface de ligne de commande ou modifier celui qui existe. Je ne sais pas comment faire cela.

AH, donc votre thème par défaut contient des éléments cassés, et il n’y a aucun moyen de le désactiver ? Si c’est ce qui s’est produit, alors c’est pourquoi vous voulez toujours placer ces personnalisations dans des composants de thème (bien que ce ne soit pas le moment idéal pour vous le dire !). (Mais je ne suis pas tout à fait certain que ce soit le cas).

Et vous n’avez aucun plugin tiers ?

Je suppose que ce que vous devez faire, peut-être, c’est, dans la console Rails, créer un nouveau thème vide, puis changer le thème par défaut pour ce nouveau thème. Je ne sais pas, sur le coup, comment faire exactement cela.

3 « J'aime »

Je ne suis pas encore tout à fait certain que le problème vienne du thème.
Mais si c’est le cas, oui, créer un thème vide et le définir par défaut pourrait résoudre le problème. Je ne sais pas comment faire cela :frowning:

Moi non plus. :man_shrugging:

Moi non plus. Je pense que je pourrais trouver la solution, mais j’ai un tas de travail payant que j’essaie de ne pas faire le week-end.

Bonjour @CamilleRoux,

Je viens de vérifier votre site pour vous en définissant la chaîne d’agent utilisateur (UA) dans la console de développement sur Google Bot. Cela affichera le site Rails uniquement, sans l’application monopage (SPA) Ember.

Vous pouvez constater que votre site est « OK » du point de vue de Rails, ce qui indique que votre conteneur fonctionne correctement et, comme vous l’avez deviné, vous rencontrez un problème JavaScript dans votre thème (composant).

Veuillez consulter la pièce jointe :

@CamilleRoux,

Pouvez-vous accéder à un invite psql (ou utiliser la console Rails si vous préférez) et exécuter les requêtes suivantes :

Vérifions le nombre de thèmes installés :

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

Vérifions quel est votre identifiant de thème par défaut (actuellement) :

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

Pouvez-vous également exécuter cette requête ?

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
4 « J'aime »

D’ailleurs,

@CamilleRoux

Je viens de tester cela pour toi.

Après avoir exécuté les requêtes dans mon message ci-dessus pour lister tous tes thèmes (et que tu aies une trace de l’état actuel de tes thèmes), en supposant que tu puisses accéder à ta base de données et exécuter cette requête, que ce soit via Rails ou directement depuis psql ; tu peux essayer ceci :

Requête pour désactiver tous les composants de thème

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

La requête ci-dessus désactivera tous tes composants de thème.

Ensuite, tu pourras voir « ce qui se passe » lorsque tu essaies d’accéder à ton site cassé.

Si j’étais dans ta situation actuelle, en me basant sur la vérification de ton site en tant qu’agent utilisateur de bot, je désactiverais tous les composants de thème.

En réalité, je les désactiverais un par un, en commençant par tout composant de thème lié aux liens de navigation (voir l’erreur JS ci-dessous comme point de départ) ; car je suis à l’aise et expérimenté avec les requêtes SQL directes sur la base de données. As-tu de solides compétences en SQL ?

Si tu n’es pas à l’aise avec cela, tu peux m’envoyer un message et me donner accès, et je t’aiderai à sortir de cette « situation pas si bonne » dans laquelle tu te trouves. Je suis assez sûr, sur la base des informations dont je dispose pour le moment, de pouvoir t’aider à remettre ton site en marche :slight_smile:

Voir aussi ton erreur JS :
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});});});});
6 « J'aime »

OK, merci les gars pour votre aide.
Il s’agit d’une ancienne installation et je n’avais aucun autre thème ou composant installé. Vous ne pouviez donc pas changer mon thème ni désactiver tous les composants.
J’ai donc restauré une ancienne sauvegarde, mis à jour mon thème, puis mis à jour Discourse. C’est mieux, mais j’ai encore une erreur (sur les deux précédentes).

Voici l’erreur :

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

Voici le contenu de ce fichier :

Discourse.start();

Ai-je une ancienne version du thème par défaut ? (le thème actuel a été créé en 2016 en ajoutant simplement du CSS et du JS au thème par défaut)

PS : Le site web fonctionne à nouveau car j’utilise la sauvegarde sans avoir mis à jour Discourse.

4 « J'aime »

Dans ce cas, je pense que ce que je ferais, c’est créer un nouveau thème générique et le définir par défaut, puis procéder à la mise à niveau et corriger votre thème.

4 « J'aime »

Petite mise à jour : j’ai le bug sur certaines versions de Discourse, mais pas toutes.

Cela fonctionne correctement sur stable et tests-passed, mais pas sur beta. Je reconnais donc que le bug a déjà été corrigé, mais n’a pas encore été intégré dans beta.

2 « J'aime »

Mais le problème concerne-t-il votre personnalisation de thème ou un thème par défaut ?

Avec la version bêta actuelle, j’ai le même bug quel que soit le thème.