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.