Problemi nell'override dei getter in un controller (3.0.0)

Ho questo codice nel mio inizializzatore, sta tentando di sovrascrivere il getter per allAdminRoutes:

    api.modifyClass('controller:admin-plugins', {
      pluginId: PLUGIN_ID,

      get allAdminRoutes() {
        return this.model
          .filter(p => p?.enabled)
          .map(p => {
            return p.admin_route;
          })
          .filter(Boolean);
      },
    });

Sta fallendo con:

TypeError: this.model is undefined

Ora, non mi dispiacerebbe, ma è solo il codice del getter originale (non l’ho ancora cambiato!)

Cosa mi sfugge? Sovrascrivere un getter in questo modo non è supportato o introduce qualche tipo di problema di scope?

4 Mi Piace

Stranamente, questo non sembra essere un problema con l’ultima versione. (Quello era solo un test in Produzione.)

Vedrò se riesco a riprodurlo su una versione stabile pulita 3.0.0.

1 Mi Piace

L’esempio dovrebbe funzionare e non sono a conoscenza di modifiche rilevanti tra la versione stabile e ora. Fateci sapere se riuscite a riprodurre il problema!

1 Mi Piace

Grazie David. Lo farò. Sì, l’ho notato. La palla è decisamente nel mio campo per ora, dato che l’ambiente in cui l’ho riscontrato non era completamente pulito.

1 Mi Piace

OK David, sembra (ed è strano):\n\n* funziona in Produzione\n* fallisce in Sviluppo 3.0.0 in poi (possibilmente prima)\n - Ho testato su un ambiente Dev vanilla senza docker, ma anche su un ambiente Dev Docker personalizzato molto pulito (ma forse con configurazione incompleta).\n\nEcco gli errori:\n\n\nErrore verificato:\n\n- Durante il rendering:\n -livello superiore\n applicazione\n discourse-root\n sidebar-wrapper\n admin\n admin-wrapper\n nav-item\n link-to\n -link-to\n\n\n\nUncaught (in promise) TypeError: Durante la generazione del link alla rotta \"adminPlugins\": this.model is undefined\n get allAdminRoutes admin-plugins.js:20\n\n\nnotare che posso inserire un’istruzione debugger prima di return this.model e il debugger non viene mai attivato.\n\nAnche @RGJ ha gentilmente esaminato questo problema e può riprodurre questo risultato.\n\nQuesto è un po’ un problema poiché chiaramente dobbiamo sviluppare cose prima che vadano in produzione… ma non devo certo dirlo a te! :sweat_smile: È anche un po’ fastidioso che sia un problema su Stable…\n\nSpostato in Bug per ora…

2 Mi Piace

OK, siamo ancora più sicuri che ci sia un problema qui… dato che mergeMixins è menzionato nello stack trace

(grazie a @RGJ per averlo trovato)

4 Mi Piace

Belissimo lavoro di ricerca, grazie @merefield e @RGJ

Non sono sicuro di quanto possiamo fare per risolvere questo problema all’interno di Discourse, dato che, come hai notato, il problema sembra essere a monte in Ember. Forse possiamo applicare una patch al metodo problematico :thinking:

Per iniziare, ho aggiunto un caso di test minimo che fallisce in modo da poter monitorare i progressi. Ci sono alcuni commenti nel test che descrivono perché il problema viene innescato dal nostro sistema modifyClass:

4 Mi Piace

Sì, grazie anche per i tuoi sforzi. È strano che abbiano lasciato irrisolta quella questione? Sappiamo se (Ember) 4.x la risolverà?

Purtroppo sembra che il problema esista ancora in Ember 4.x :cry:

1 Mi Piace

Stranamente, questo sembra essere l’unico progresso nel progetto Ember, all’interno della PR associata che è ancora in bozza. Mi chiedo se tutto ciò che sarebbe necessario sia una richiesta educata di dare priorità quando il tempo sarà disponibile?:

Apprezzo pienamente che questo sia stato aperto da un membro dello staff di terze parti.

Vale la pena sollevare un problema su GitHub - emberjs/ember.js: Ember.js - A JavaScript framework for creating ambitious web applications e fare riferimento a questa PR, a questo argomento e al tuo test?

Sì, il mio test si basa sul loro (ma con l’API api.modifyClass specifica di Discourse). Non penso che dovremmo aprire un nuovo problema: è 100% lo stesso di quello già aperto. Vedremo se possiamo fare qualcosa per farlo dare priorità.

3 Mi Piace

Sto facendo qualche progresso - ora abbiamo una PR con una correzione aperta su [BUGFIX LTS] Don't run getters while applying mixins by wycats · Pull Request #20388 · emberjs/ember.js · GitHub

Una volta che sarà unita e riportata su Ember 3.28, mireremo ad applicarla a Discourse il prima possibile.

3 Mi Piace

Riportato?! Mi chiedevo a riguardo, ottime notizie!

Grazie per aver seguito questa cosa, David!

Questa correzione è ora stata rilasciata come parte di Ember 3.28.12 e abbiamo aggiornato Discourse per utilizzarla. Fateci sapere se riscontrate ancora problemi con modifyClass dopo l’aggiornamento all’ultima versione di Discourse.

6 Mi Piace

Fantastico David, grazie mille!

2 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 9 giorni. Non sono più consentite nuove risposte.