Sitio web en blanco después de la actualización

Hola,

Acabo de actualizar nuestro Foro Discourse y ahora está en blanco (página de inicio y administración). El HTML parece correcto y los RSS funcionan.

He encontrado errores de JS debido a nuestro tema. ¿Podría el problema venir de ahí?
Capture d'écran 2020-08-22 à 15.57.03

¿Cómo puedo solucionarlo? ¿Puedo modificar/desactivar el código JS de mi tema desde la CLI? ¿Instalar un tema nuevo?

Edición: No tengo ningún otro tema instalado, así que no puedo usar ?preview_theme_id=

Hola @CamilleRoux

También puedes cambiar el tema predeterminado directamente en la base de datos con SQL, si te sientes cómodo ejecutando consultas directas a la BD.

Espero que te ayude.

¿Has probado Cómo usar el modo seguro de Discourse?

¿Qué estás haciendo :thinking:?

  • Verificar modo seguro: https://forum.humancoders.com/?safe_mode=no_custom%2Cno_plugins%2Conly_official

  • Registros https://forum.humancoders.com/logs (¿privado?)

Intenta ejecutar esto vía SSH:

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

El modo seguro no funciona… mismo error:

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

Ya hice un rebuild: ./launcher rebuild app

No tengo otros temas instalados, así que debería instalar uno nuevo con la CLI o modificar el existente. No sé cómo hacerlo.

¡Ah, entonces tu tema predeterminado tiene cosas rotas, así que no hay forma de desactivarlo? Si eso es lo que pasó, entonces esa es la razón por la que siempre debes poner esas personalizaciones en los componentes del tema (aunque no es el momento más útil para decírtelo). (Pero no estoy completamente seguro de que sea ese el caso).

¿Y no tienes plugins de terceros?

Supongo que lo que quizás necesites hacer es, en la consola de Rails, crear un nuevo tema vacío y luego cambiar el predeterminado por ese nuevo tema. No sé, de inmediato, cómo hacerlo exactamente.

Todavía no estoy completamente seguro de que el problema provenga del tema. Pero si es así, sí, crear un tema vacío y establecerlo por defecto podría solucionar el problema. No sé cómo hacerlo :frowning:

Yo tampoco. :man_shrugging:

Yo tampoco. Creo que podría resolverlo, pero tengo un montón de trabajo remunerado que estoy tratando de no hacer en fin de semana.

Hola @CamilleRoux

Acabo de revisar tu sitio configurando la cadena de UA en la consola de desarrollo como Google bot. Esto mostrará solo el sitio de Rails sin la SPA de Ember.

Puedes ver que tu sitio está “OK” desde la perspectiva de Rails, lo que indica que tu contenedor está funcionando correctamente y, como has adivinado, tienes un problema de JavaScript en tu tema (componente).

Véase adjunto:

@CamilleRoux

¿Puedes acceder a un prompt de psql (o usar la consola de Rails si lo prefieres) y ejecutar estas consultas:

Verifiquemos cuántos temas tienes instalados:

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

Verifiquemos cuál es tu ID de tema predeterminado (actualmente):

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

Además, ¿puedes ejecutar esto también?

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

OBTW,

@CamilleRoux

Acabo de probar esto para ti.

Después de ejecutar las consultas en mi publicación anterior para listar todos tus temas (y tener un registro del estado actual de tus temas), suponiendo que puedas acceder a tu base de datos y ejecutar esta consulta, ya sea desde Rails o directamente desde psql; puedes probar lo siguiente:

Consulta para desactivar todos los componentes del tema

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

La consulta anterior desactivará todos los componentes de tus temas.

Luego podrás ver “qué sucede” cuando intentas acceder a tu sitio roto.

Si estuviera en tu situación actual, basándome en la verificación de tu sitio como un agente de usuario tipo bot, desactivaría todos los componentes del tema.

De hecho, los desactivaría uno por uno, comenzando con cualquier componente del tema relacionado con los enlaces de navegación (ver el error de JS a continuación como punto de partida); porque me siento cómodo y tengo experiencia con consultas SQL directas a la base de datos. ¿Tienes habilidades sólidas en SQL?

Si no te sientes cómodo con esto, puedes enviarme un mensaje y darme acceso, y te ayudaré a salir de esta “situación no tan buena” en la que estás. Estoy bastante seguro, con la información que tengo en este momento, de que puedo ayudarte a volver a ponerte en marcha :slight_smile:

Ver también tu error de JS:
Discourse.ExternalNavItem=Discourse.NavItem.extend({href:function(){return this.get('href');}.property('href')});I18n.translations.fr.js.filters.formations={title:"Formaciones",help:"Formaciones para desarrolladores"};Discourse.NavItem.reopenClass({buildList:function(category,args){var list=this._super(category,args);list.push(Discourse.ExternalNavItem.create({href:'https://www.humancoders.com/',name:'formaciones'}));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});});});});

De acuerdo, gracias a todos por su ayuda.
Es una instalación antigua y no tenía instalado ningún otro tema o componente. Por lo tanto, no pudieron cambiar mi tema ni desactivar todos los componentes.
Así que restauré una copia de seguridad antigua, actualicé mi tema y luego actualicé Discourse. Está mejor, pero todavía tengo un error (de los dos que tenía antes).

Este es el error:

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

Esto es lo que contiene este archivo:

Discourse.start();

¿Tengo una versión antigua del tema predeterminado? (el tema actual se creó en 2016 simplemente agregando algo de CSS y JS al tema predeterminado)

PD: El sitio web está funcionando de nuevo porque estoy usando la copia de seguridad sin actualizar Discourse.

Entonces, creo que lo que haría sería crear un nuevo tema genérico y establecerlo como predeterminado, luego realizar la actualización y corregir tu tema.

Pequeña actualización: He encontrado el error en algunas versiones de Discourse, pero no en todas.
Funciona correctamente en stable y tests-passed, pero no en beta. Así que admito que el error ya ha sido corregido, pero aún no se ha hecho commit en la rama beta.

¿Pero el problema es con la personalización de tu tema o con uno predeterminado?

Con la versión beta actual, tengo el mismo error sin importar el tema.