Il modale del selettore avatar crasha con "t.split non è una funzione" (avatar-selector.gjs)

Riepilogo:
L’apertura della modale di selezione avatar (per cambiare l’avatar del profilo) genera un errore JavaScript e la popup non funziona correttamente.

Versione Discourse: v2026.7.0-latest (commit 59588b5d2a)
Versione Ember: v6.10.1

Passaggi per riprodurre il problema:

  1. Vai sul profilo utente
  2. Clicca sull’opzione per cambiare avatar
  3. Si apre la modale di selezione avatar (attivata tramite un flusso di conferma di spostamento “risolto”, in base alla stack trace)
  4. Compare immediatamente un errore nella console del browser e la modale non si comporta correttamente

Comportamento atteso:
La selezione avatar dovrebbe aprirsi normalmente e permettere all’utente di scegliere/caricare un avatar.

Comportamento effettivo:
La console genera: TypeError: t.split is not a function all’interno del getter selectableAvatars in avatar-selector.gjs.

Risoluzione problemi già eseguita:

  • Testato in Modalità Sicura con tutti i temi e i plugin disabilitati, l’errore si verifica comunque, quindi questo non sembra essere causato da un tema o un plugin.

Browser / OS:

Brave / Windows 11

Log console / stack trace:
```
?safe_mode=no_themes,no_plugins:346 GET https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496 net::ERR_BLOCKED_BY_CLIENT
app.js:365 :information_source: Discourse v2026.7.0-latest — Commits · discourse/discourse · GitHub — Ember v6.10.1
avatar-selector.gjs:47 Uncaught (in promise) TypeError: t.split is not a function
at get selectableAvatars (avatar-selector.gjs:47:47)
at R (cache-DtDz7X5V.js:1647:15)
at index.js:87:32
at index.js:64:37
at zn (index.js:396:5)
at j (index.js:62:16)
at index-DaCZcoCY.js:4335:20
at index.js:64:37
at zn (index.js:396:5)
at j (index.js:62:16)
at index-DaCZcoCY.js:4335:20
at index.js:64:37
at zn (index.js:396:5)
at j (index.js:62:16)
at index.js:158:20
at index.js:64:37
at zn (index.js:396:5)
at j (index.js:62:16)
at Object.evaluate (index.js:1970:16)
at Object.evaluate (index.js:103:106)
at zb.evaluateSyscall (index.js:2873:20)
at zb.evaluateInner (index.js:2852:64)
at zb.evaluateOuter (index.js:2849:10)
at e.next (index.js:4167:45)
at e._execute (index.js:4157:21)
at e.execute (index.js:4133:41)
at _x.handleException (index.js:3450:19)
at bx.handleException (index.js:3592:52)
at hx.throw (index.js:3414:16)
at iy.evaluate (index.js:565:37)
at hx._execute (index.js:3401:34)
at hx.execute (index.js:3393:17)
at xx.rerender (index.js:3610:8)
at ww.render (index-DaCZcoCY.js:5211:23)
at index-DaCZcoCY.js:5409:16
at xb (index.js:2414:7)
at e.renderRoots (index-DaCZcoCY.js:5389:7)
at #o (index-DaCZcoCY.js:5374:12)
at e.revalidate (index-DaCZcoCY.js:5435:10)
at invoke (index.js:264:14)
at Rc.flush (index.js:180:11)
at zc.flush (index.js:334:19)
at pl._end (index.js:762:32)
at _boundAutorunEnd (index.js:499:12)
selectableAvatars @ avatar-selector.gjs:47
_getProp @ cache-DtDz7X5V.js:1647
(anonymous) @ index.js:87
(anonymous) @ index.js:64
track @ index.js:396
valueForRef @ index.js:62
(anonymous) @ index-DaCZcoCY.js:4335
(anonymous) @ index.js:64
track @ index.js:396
valueForRef @ index.js:62
(anonymous) @ index-DaCZcoCY.js:4335
(anonymous) @ index.js:64
track @ index.js:396
valueForRef @ index.js:62
(anonymous) @ index.js:158
(anonymous) @ index.js:64
track @ index.js:396
valueForRef @ index.js:62
(anonymous) @ index.js:1970
evaluate @ index.js:103
evaluateSyscall @ index.js:2873
evaluateInner @ index.js:2852
evaluateOuter @ index.js:2849
next @ index.js:4167
_execute @ index.js:4157
execute @ index.js:4133
handleException @ index.js:3450
handleException @ index.js:3592
throw @ index.js:3414
evaluate @ index.js:565
_execute @ index.js:3401
execute @ index.js:3393
rerender @ index.js:3610
(anonymous) @ index-DaCZcoCY.js:5211
(anonymous) @ index-DaCZcoCY.js:5409
inTransaction @ index.js:2414
renderRoots @ index-DaCZcoCY.js:5389
#o @ index-DaCZcoCY.js:5374
revalidate @ index-DaCZcoCY.js:5435
invoke @ index.js:264
flush @ index.js:180
flush @ index.js:334
_end @ index.js:762
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_ensureInstance @ index.js:919
ensureInstance @ index.js:731
scheduleRevalidate @ index-DaCZcoCY.js:4146
dirtyTag @ index.js:229
dirtyTagFor @ index.js:848
setter @ index.js:871
set @ cache-DtDz7X5V.js:1886
show @ modal.js:57
await in show
showAvatarSelector @ account.js:43
_join @ index.js:788
join @ index.js:605
join @ index.js:152
(anonymous) @ route-action.js:48
(anonymous) @ index.js:2534
(anonymous) @ d-button.gts:216
invoke @ index.js:264
flush @ index.js:180
flush @ index.js:334
_end @ index.js:762
end @ index.js:565
_runExpiredTimers @ index.js:869
setTimeout
setTimeout @ index.js:39
_installTimerTimeout @ index.js:912
_reinstallTimerTimeout @ index.js:896
_later @ index.js:829
later @ index.js:652
next @ index.js:562
_triggerAction @ d-button.gts:213
click @ d-button.gts:167
```

2 Mi Piace

Riusci a riprodurre questo problema qui su meta?

Il messaggio di errore sopra proviene dalla tua istanza e sei dietro Cloudflare? Questa parte sembrerebbe indicarlo.

1 Mi Piace

Ciao,

Grazie per la risposta e per averlo segnalato.

Per rispondere alla tua domanda: no, non riesco a riprodurre il problema su meta.discourse.org, ma solo sul mio forum.

Riguardo a Cloudflare: sì, il mio forum è dietro Cloudflare, ma quella specifica riga della console (quella relativa a beacon.min.js / ERR_BLOCKED_BY_CLIENT) non è correlata al bug effettivo. È causata dal blocco dello script di analisi di Cloudflare da parte di Brave Shields. Ho disabilitato completamente Brave Shields e quella riga è scomparsa, ma l’errore del selettore avatar (TypeError: t.split is not a function) si verifica comunque esattamente allo stesso modo.

Per darti un contesto: gestisco il mio forum dietro Cloudflare da quasi 3 anni e la modifica dell’avatar del profilo ha sempre funzionato correttamente fino ad ora. Quindi sembra essere una regressione piuttosto che un problema legato a Cloudflare esistente da tempo.

Poiché non si riproduce su meta, potrebbe essere specifico di qualcosa nella mia configurazione. Sono felice di analizzare qualsiasi impostazione o log che possa aiutare a restringere il campo. Fammi sapere cosa sarebbe utile controllare (ad esempio il valore dell’impostazione del sito “avatar selezionabili” o qualsiasi cosa relativa al plugin Solved, che ho notato essere presente nel trace dello stack come innesco di questa modale).

Grazie per aver indagato sulla questione.

2 Mi Piace

sì, hai ragione, probabilmente non è Cloudflare.

Ho testato questo su un’istanza separata, dove ho abilitato solo gli avatar selezionabili. Ho dovuto caricare due avatar (requisito delle impostazioni del sito) e poi abilitarli.

Puoi modificare queste due impostazioni e vedere se cambia qualcosa dalla tua parte?

2 Mi Piace

Ciao,

Grazie per aver approfondito la questione. Avevi ragione.

Ho caricato due avatar nelle impostazioni degli "avatar selezionabili

2 Mi Piace

Sì, ha senso. Vuoi inviare una correzione? Se ti senti a tuo agio, sono felice di accettare una Pull Request per questo.

1 Mi Piace

Mi occupo di sviluppo software, ma non ho molta esperienza con questo tipo di cose. Quindi esito a inviare una correzione da solo, rischiando di sbagliare. Se qualcuno del team principale vuole prendersi in carico la questione, sarebbe perfetto. Posso aprire un issue su GitHub, se preferite.

3 Mi Piace

Nessun problema, questo dovrebbe risolvere il problema: DEV: Fix JS error in modal when selected avatars is misconfigured - Pull Request #41663 - discourse/discourse - GitHub

1 Mi Piace