Le forum Discourse est cassé après un changement de serveur

Notre instance Discourse est hébergée sur Digital Ocean depuis de nombreuses années, au point où des problèmes survenaient car nous étions encore sur Ubuntu 18. J’ai donc créé un nouveau Droplet avec une nouvelle installation de Discourse, l’ai amorcé, puis téléchargé et restauré la dernière sauvegarde de l’ancien Droplet. Aucune erreur pendant tout ce processus.

Cependant, une fois connecté à la nouvelle instance, elle ressemble à ceci :

Et la console me donne ceci :

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

Toute suggestion sur la façon de commencer à résoudre ce problème serait très appréciée. Merci !

1 « J'aime »

Pouvez-vous essayer de visiter votre site en mode sans échec pour voir s’il se charge ?

1 « J'aime »

Je l’ai fait. Cela semble identique, et j’obtiens les mêmes erreurs.

Oh, et aussi, j’ai juste essayé de me connecter à un autre compte sans permissions d’administrateur ou de modérateur, et cela fonctionne bien, pour autant que je puisse en juger. J’ai accès à trois types de comptes différents, et voici les résultats de mes expériences :

  • compte administrateur → cassé
  • compte modérateur (avec un accès limité au tableau de bord administrateur) → cassé
  • compte régulier → fonctionne bien

Le problème semble se produire uniquement si le menu de la barre latérale inclut le lien « Admin », car c’est ce qui serait apparu juste en dessous de l’élément « Review » dans la capture d’écran ci-dessus. Peut-être que cela aide ?

Aussi, si cela a de l’importance, l’ancienne instance dont j’ai pris la sauvegarde n’était pas sur la dernière version de Discourse. Je pense qu’elle était sur quelque chose comme la version 3.1.2. La nouvelle instance, bien sûr, est sur la dernière version.

Le problème est qu’il y a une erreur de syntaxe dans l’un des fichiers JavaScript d’administration, ce qui entraîne l’effet secondaire de l’enregistrement de la route admin.

Dans la console, êtes-vous en mesure de développer ou d’accéder au fichier dans lequel l’erreur de syntaxe est générée ? Les informations sont assez limitées pour que nous puissions déterminer ce qui ne va pas.

Bien sûr, bien qu’il ne s’agisse que d’une seule ligne contiguë de Javascript minifié. J’ai essayé de tout coller ici, mais cela dépasse le nombre de caractères autorisé. J’ai utilisé un outil en ligne pour déminifier et j’ai identifié le bloc de code qui génère l’erreur.

(P.prototype.handlersFor = function (e) {
    var t = this.names[e];
    if (!t) throw new Error("Il n'y a pas de route nommée " + 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;
}),

Cela aidera-t-il, ou dois-je trouver un moyen de publier le fichier entier ?

Utilisez-vous Cloudflare avec le nuage orange ? Si oui, désactivez-le.

2 « J'aime »

J’ai un problème similaire qui semble avoir commencé hier ou aujourd’hui. Mes routes d’administration ne fonctionnent pas et un menu est cassé.

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

J’ai trouvé ce sujet en cherchant pour voir si quelqu’un d’autre rencontrait un problème avec Cloudflare.

Si je vide le cache de Cloudflare ou si j’active le mode développeur, le problème disparaît, mais dès que la mise en cache reprend, le problème revient.

Modification : Je ne suis pas sûr si cela est lié, mais voici quelques-unes des erreurs dans la console lorsque je suis connecté en tant qu’administrateur.

Voici la ligne de code :

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

Mon menu est coupé ici :

L’erreur « no route named admin » se produit lorsque j’ouvre ce menu. Il est peut-être coupé à l’endroit où se trouverait le lien « admin ».

Vous devriez désactiver toutes les règles dans Cloudflare, y compris Rocket Launcher et tout ce qui concerne le WAF.

Si vous gardez votre configuration Cloudflare propre, cela ne pose aucun problème avec Discourse.

Rocket Loader est désactivé sur ce site. Je ne pense pas que des modifications aient été apportées récemment aux paramètres de Cloudflare. (Je viens de vérifier les journaux d’audit.)

@Ryan_Hyer Je regarde à nouveau votre capture d’écran. Est-ce que cela coupe juste là où l’élément de menu administrateur apparaîtrait ? C’est le même endroit où cela se produit sur mon site.

Si vous avez des éléments comme le WAF activé, Cloudflare pourrait également apporter des modifications à son comportement interne qui pourraient affecter votre site.

Veuillez également vous assurer que la fonctionnalité « minification automatique » de Cloudflare est désactivée et que vous avez purgé le cache.

Ils ont déprécié la fonctionnalité car elle ne fonctionne pas pour les fonctionnalités JS modernes (que Discourse utilise désormais)

1 « J'aime »

Nous avons annulé la modification en raison des problèmes avec Cloudflare et Safari 15.

Donc @Ryan_Hyer si vous mettez à niveau Discourse à nouveau, les choses devraient revenir à la normale.

(mais quand même, je recommande fortement de désactiver toutes les fonctionnalités d’optimisation JS de Cloudflare comme Rocket Loader et l’auto-minification)

3 « J'aime »

Merci ! Git pull dit que je suis déjà à jour, donc le changement n’est pas encore disponible ?

Je crois que la seule chose pour laquelle nous utilisons Cloudflare est le DNS et la protection DDOS, rien d’autre. Mais oui, nous avions le nuage orange activé. Je viens de le désactiver, et mon site semble intact, génial ! Merci les gars !

2 « J'aime »

Ce nuage orange, sans aucun ajustement par défaut, signifie essentiellement « cassez mon site ».

Nous avons un guide sur la configuration à effectuer si vous l’utilisez.

1 « J'aime »

Merci, c’était ça. J’ai désactivé la minimisation automatique, vidé le cache, effectué un actualisation forcée et les choses ont refonctionné.

3 « J'aime »

Ce sujet a été automatiquement fermé 30 jours après la dernière réponse. Les nouvelles réponses ne sont plus autorisées.