Errore: qualcosa è andato storto - "Errore durante l'elaborazione del percorso: discovery.categories"

Un utente amministratore sta riscontrando un errore strano dopo aver aggiornato Discourse. L’errore si verifica quando l’utente clicca sul pulsante Indietro o sul logo del sito. Sembra che venga attivato JavaScript per tornare alla radice/home del sito, ma invece vengono generati i seguenti errori:

Visivamente l’errore appare così:

Nella console JS:
console

Ho anche notato che questo accade con qualsiasi clic sulla barra di navigazione, ad esempio tentando di andare a /admin.

Qualche idea su come indagare ulteriormente? Non vedo errori in production.log o altrove, quindi è stato un vero rompicapo, dato che sembra legato a JavaScript.

Hai provato Come utilizzare la Modalità Sicura di Discourse

Grazie per il suggerimento. Stranamente l’errore persiste anche dopo aver abilitato tutte e 3 le opzioni in Modalità Provvisoria:

Finora, ho continuato a imbattermi in vicoli ciechi durante l’ulteriore debug. Sospetto che la “Modalità Provvisoria” non disabiliti completamente JavaScript a causa di questo… Esiste un altro passaggio che possa eliminare ulteriormente JavaScript dalle funzionalità per i test?

Il tuo sito è accessibile al pubblico? Se sì, c’è la possibilità di condividere un link? (Va bene anche tramite un messaggio privato se preferisci non pubblicarlo pubblicamente)

Grazie per il link @mreach. Da qui non vedo problemi evidenti.

Hai menzionato che questo problema interessa solo un utente del sito. Sai se è limitato a un singolo browser/dispositivo? O si verifica per questo utente anche quando accede da un dispositivo diverso?

Se il problema riguarda solo un browser/dispositivo, potrebbe indicare che un’estensione del browser (ad esempio un blocco degli annunci) interferisce con il codice di Discourse.

Se invece il problema si presenta su tutti i browser, la situazione è più complessa. Hai installato plugin di terze parti sul tuo forum? Sarebbe anche utile sapere come l’utente ha configurato la sua ‘pagina iniziale predefinita’ (trovabile nelle preferenze ‘interfaccia’ di Discourse).

Grazie, sì, ho avuto più o meno gli stessi pensieri. Ho fatto provare loro a disabilitare tutte le estensioni e a cancellare tutti i dati del browser. Ho appena ricevuto un’ulteriore segnalazione dallo stesso problema da un altro utente… E sono entrambi su Chrome. Ho chiesto loro di provare Firefox e Brave e hanno detto che in entrambi i casi funzionava, ma nulla di ciò che hanno provato sembra far funzionare di nuovo Chrome “correttamente”. Ho chiesto loro di nuovo i risultati in modalità Incognito e hanno entrambi confermato che Incognito funziona. Tutto questo è accaduto dopo l’ultimo aggiornamento di Discourse, quindi sembra che qualcosa non venga cancellato correttamente in JS… Il che non riesco proprio a capire come sia possibile.

Ho chiesto loro quale pagina è impostata come home page… Ti farò sapere. È un’ottima idea che non mi era nemmeno venuta in mente…

1 Mi Piace

Va bene, interessante ma non conclusivo:

L’utente che riscontra il problema ha impostato “Categorie” come home page:
image

Se la modificano in un’altra, ad esempio “Ultime”, riescono a caricare la home page cliccando sul logo del sito E usando la freccia “indietro” del browser. Se la cambiano DI NUOVO in “Categorie” invece di “Ultime”, il problema/l’errore si ripresenta. :weary_face:

Quindi questo utente è anche un amministratore e, se/cliccano sull’icona hamburger in alto a destra e selezionano “Admin”, ricevono anch’essi l’errore riportato sopra, anche quando la home page è impostata su “Ultime” invece di “Categorie”.

Certo, è una nuova informazione, ma non del tutto utile dal mio punto di vista. Mmh.

1 Mi Piace

C’è la possibilità di ottenere maggiori dettagli su questi errori? Dovrebbero essere tutti espandibili e, si spera, includere un po’ più di informazioni sull’errore.

Hanno ottenuto questo output dalla console: https://pastebin.com/LuDHesyQ

Grazie ancora per i suggerimenti fino a ora - hai per caso qualche osservazione a riguardo, @david?

1 Mi Piace

Temo di no: questi log sono piuttosto generici e non sembrano indicare chiaramente la causa effettiva.

Il log più interessante è quello in cima allo screenshot che hai condiviso sopra, ed è anche l’ultima voce nel pastebin

domainname.com/:1 Uncaught (in promise) {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}

Potrebbe essere utile sapere cosa c’è dentro gli .... Se fai clic sul piccolo triangolo a sinistra del log, dovrebbe espandersi per rivelare ulteriori informazioni. Una copia/incolla o uno screenshot di quello potrebbe essere d’aiuto.

A parte questo, stai riscontrando errori lato server (in /logs)? E stai eseguendo l’ultima versione di Discourse?

Sì, sto eseguendo l’ultima versione. Ho controllato i log durante l’errore e non ho trovato nulla, né in produzione né altrove…

Hmm, hanno eseguito un’operazione di copia oggetto su quella riga e ottenuto quanto segue:

{
    "readyState": 4,
    "responseText": "<!doctype html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"refresh\" content=\"30\">\n        <title>domainname.com Manutenzione</title>\n        <style>\n\t    html {\n\t        background: #3d4147;\n\t    }\n            .center {\n                display: flex;\n                justify-content: center;\n            }\n            .container {\n                background: #717984;\n                max-width: 500px;\n                padding: 5px 50px 30px 50px;\n                margin-top: 20px;\n            }\n            .title {\n                padding-top: 20px;\n            }\n            h1, p {\n                font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif;\n            }\n            @keyframes spin {\n                from { transform: rotate(0deg); }\n                to { transform: rotate(360deg); }\n            }\n            .spinner {\n                animation: spin 10s infinite linear;\n                height: 75px;\n                width: 75px;\n                border: 7px solid #555555;\n                border-right-color: transparent;\n                border-radius: 50%;\n                margin-top: 20px;\n            }\n        </style>\n    </head>\n    <body>\n                <div class=\"center\">\n                    <img src=\"/err/site.png\" alt=\"immagine logo sito\" width=\"512\" height=\"171\">\n                </div>\n        <div class=\"center\">\n            <div class=\"container\">\n\t\t<center>\n                  <h1 class=\"title\" >Siamo temporaneamente in manutenzione&hellip;</h1>\n\t\t</center>\n\n                <div class=\"center\">\n                    <img src=\"/err/error.png\" alt=\"immagine manutenzione\" width=\"150\" height=\"152\">\n                </div>\n\n\t\t<center>\n                  <p>domainname.com è attualmente in manutenzione. Stiamo aggiornando il sito o eseguendo una manutenzione programmata. </p>\n\t\t  <p>Per tua comodità, abbiamo impostato questa pagina per aggiornarsi AUTOMATICAMENTE quando il sistema sarà di nuovo disponibile!</p>\n                  <p>Grazie mille per la tua pazienza.</p>\n\t\t</center>\n\t\t\n                <div class=\"center\">\n                    <div class=\"spinner\"></div>\n                </div>\n            </div>\n        </div>\n    </body>\n</html>\n",
    "status": 200,
    "statusText": "parsererror"
}

E uno screenshot della console:

@david è a questo che ti riferivi? Spero di aver catturato i risultati corretti.

Stai eseguendo Discourse dietro un proxy? Sono quasi sicuro che questo messaggio di manutenzione non provenga dallo stesso Discourse :thinking:

Questa è una pagina di errore che viene visualizzata quando il sito è in manutenzione (ad esempio durante un aggiornamento o un aggiornamento Docker)…

Immagino che il tuo sito non fosse in manutenzione deliberata al momento dell’errore? In tal caso, deve esserci qualcosa di sbagliato nell’implementazione o nella configurazione del proxy. Per escluderlo, sei in grado di esporre direttamente Discourse sulla porta 80/443? (secondo le nostre istruzioni standard di installazione)

Certo, è possibile che un errore in Discourse stia causando la visualizzazione di questo messaggio da parte del proxy. Tuttavia, è difficile diagnosticarlo senza sapere cosa stava restituendo Discourse. Forse il tuo proxy mantiene i log delle risposte upstream di Discourse?