Discurso roto después de mover los servidores

Nuestra instancia de Discourse ha estado alojada en Digital Ocean durante muchos años, hasta el punto en que surgieron problemas debido a que todavía estábamos en Ubuntu 18. Por lo tanto, creé un nuevo Droplet con una instalación limpia de Discourse, lo inicié y luego descargué y restauré la última copia de seguridad del Droplet antiguo. No hubo errores durante todo este proceso.

Sin embargo, una vez que inicié sesión en la nueva instancia, se ve así:

Y la consola me muestra esto:

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

Agradecería mucho cualquier sugerencia sobre dónde empezar a solucionar este problema. ¡Gracias!

1 me gusta

¿Puedes intentar visitar tu sitio en modo seguro para ver si carga?

1 me gusta

Lo he hecho. Se ve idéntico y obtengo los mismos errores.

Ah, y también, acabo de intentar iniciar sesión en una cuenta diferente sin permisos de administrador o moderador, y funciona bien, hasta donde puedo decir. Tengo acceso a tres tipos diferentes de cuentas, y aquí están los resultados de mis experimentos:

  • cuenta de administrador → rota
  • cuenta de moderador (con acceso limitado al panel de administración) → rota
  • cuenta normal → funciona bien

El problema parece ocurrir solo si el menú lateral incluye el enlace “Admin”, ya que eso es lo que habría aparecido justo debajo del elemento “Review” en la captura de pantalla anterior. ¿Quizás eso ayude?

Además, si es relevante, la instancia anterior de la que tomé la copia de seguridad no estaba en la última versión de Discourse. Creo que estaba en algo como 3.1.2. La nueva instancia, por supuesto, está en la última.

El problema es que hay un error de sintaxis en uno de los archivos javascript de administración y eso lleva al efecto secundario de que la ruta admin no se registre.

En la consola, ¿puedes expandir o acceder al archivo en el que se produce el error de sintaxis? La información es algo limitada en este momento para que podamos decir qué está mal.

Claro, aunque es solo una línea contigua de Javascript minimizado. Intenté pegar todo aquí, pero excede el recuento de caracteres permitido. Usé una herramienta en línea para descomprimir y identifiqué el bloque de código que genera el error.

(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;
}),

¿Esto ayudará, o necesito encontrar una manera de publicar el archivo completo?

¿Estás usando Cloudflare con la nube naranja? Si es así, desactívala.

2 Me gusta

Tengo un problema similar que parece haber comenzado hoy o ayer. Mis rutas de administrador no funcionan y un menú está roto.

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

Encontré este tema buscando si alguien más estaba encontrando un problema con Cloudflare.

Si borro la caché de Cloudflare o activo el modo de desarrollo, desaparece, pero tan pronto como la caché se activa, el problema vuelve.

Editar: No estoy seguro si esto está relacionado, pero estos son algunos de los errores en la consola cuando se inicia sesión como administrador.

Aquí está la línea de código:

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

Mi menú se corta aquí:

El error “no route named admin” ocurre cuando abro ese menú. Podría estar cortándose donde estaría el enlace “admin”.

Deberías deshabilitar todas las reglas en Cloudflare, incluido Rocket Launcher y cualquier cosa de WAF.

Si mantienes tu configuración de Cloudflare limpia, no causa ningún problema con Discourse.

Rocket Loader está desactivado en este sitio. No creo que se hayan realizado cambios recientes en la configuración de Cloudflare. (Acabo de revisar los registros de auditoría).

@Ryan_Hyer Estoy volviendo a mirar tu captura de pantalla. ¿Se corta justo donde aparecería el elemento del menú de administración? Ese es el mismo lugar donde está sucediendo en mi sitio.

Si tienes cosas como WAF activado, Cloudflare también podría hacer cambios en su comportamiento interno que podrían afectar tu sitio.

Asegúrate también de que la función “minificación automática” de Cloudflare esté desactivada y de que hayas purgado la caché.

Han desaprobado la función porque no funciona para las características modernas de JavaScript (que Discourse está utilizando ahora)

1 me gusta

Hemos revertido el cambio debido a los problemas con Cloudflare y Safari 15.

Así que @Ryan_Hyer si vuelves a actualizar Discourse, las cosas deberían volver a la normalidad.

(pero aun así, recomiendo encarecidamente deshabilitar todas las funciones de “optimización” de JavaScript de Cloudflare como Rocket Loader y la minificación automática)

3 Me gusta

¡Gracias! Git pull dice que ya estoy actualizado, así que el cambio aún no debe estar disponible.

Creo que lo único para lo que estamos usando Cloudflare es para DNS y protección contra ataques DDoS, nada más. Pero sí, teníamos la nube naranja activada. Acabo de apagarla y mi sitio parece estar intacto, ¡genial! ¡Gracias, chicos!

2 Me gusta

Esta nube naranja sin ningún ajuste de los valores predeterminados significa esencialmente “rompe mi sitio”.

Tenemos una guía sobre qué configurar si la estás utilizando.

1 me gusta

Gracias, eso era todo. Desactivé la minificación automática, borré la caché, hice una actualización forzada y las cosas volvieron a funcionar.

3 Me gusta

Este tema se cerró automáticamente 30 días después de la última respuesta. Ya no se permiten nuevas respuestas.