Mancata sottoscrizione di Paho

Problema

AMQJS0005E Errore interno. Messaggio di errore: Impossibile leggere la proprietà 'show' di undefined

Questo errore viene mostrato sporadicamente, specialmente quando si Shift-Reload l'intera pagina.

Soluzione

Ho un Plugin Vue.js per mostrare messaggi "toast" (Vue.toasted). Attualmente lo uso per scopi di debug.

Tutto ha funzionato bene inizialmente, poiché il mio codice è stato eseguito dopo che Vue è stato inizializzato e l'intera pagina caricata.

Volendo accelerare la sottoscrizione MQTT, ho inserito del codice per lanciare la sottoscrizione prima.

È qui che mi sono imbattuto in questo errore. Come scritto, sembrava essere una condizione di gara, poiché non era coerente.

si scopre che i miei messaggi tostati, che ho messo per il debug, stavano causando il problema.

funzione info(msg){
     console.log(msg);
     /*if (typeof Vue !== 'undefined') {
         Vue.toasted.show(msg, {
             azione : {
                 testo : 'OK',
                 onClick : (e, toastObject) => {
                     toastObject.goAway(0);
                 }
             }
         });
     } else {
         console.log("... Vue non è ancora disponibile...");
     }*/   
}

Come vedete, la rimozione di Vue.toasted.show ha portato il codice a funzionare bene.

Quindi: se PAHO lancia messaggi di errore, potrebbe essere legato a qualche altro codice che avete messo, non necessariamente allo stato interno di Paho.

Codice di lavoro:

funzione info(msg){
     console.log(msg);
     if (typeof Vue !== 'undefined' && typeof Vue.toasted !== 'undefined') {
         Vue.toasted.show(msg, {
             azione : {
                 testo : 'OK',
                 onClick : (e, toastObject) => {
                     toastObject.goAway(0);
                 }
             }
         });
     } else {
         console.log("... Vue non è ancora disponibile...");
     }
}

Questo codice funziona, poiché controlla anche se Vue.toasted è stato inizializzato.