Paho nicht abonnieren
Problem
AMQJS0005E Interner Fehler. Fehlermeldung: Cannot read property 'show' of undefined
Dieser Fehler wird sporadisch angezeigt, insbesondere wenn Sie die gesamte Seite mit der Umschalttaste neu laden.
Lösung
Ich habe ein Vue.js Plugin um "Toast" Nachrichten anzuzeigen (Vue.toasted). Ich benutze es derzeit für Debugging-Zwecke.
Alles funktionierte zunächst gut, wie mein Code ausgeführt wurde, nachdem Vue initialisiert wurde und die ganze Seite geladen.
Um das MQTT-Abonnement zu beschleunigen, habe ich Code eingefügt, um das Abonnement früher zu starten.
Hier bin ich auf diesen Fehler gestoßen. Wie geschrieben, schien es eine Race Condition zu sein, da es nicht konsistent war.
Es stellte sich heraus, dass meine getoasteten Nachrichten, die ich zur Fehlersuche eingefügt hatte, das Problem verursachten.
Funktion info(msg){
console.log(msg);
/*if (typeof Vue !== 'undefined') {
Vue.toasted.show(msg, {
Aktion : {
text : 'OK',
onClick : (e, toastObject) => {
toastObject.goAway(0);
}
}
});
} sonst {
console.log("... Vue noch nicht verfügbar ...");
}*/
}
Wie Sie sehen, führte das Entfernen der Vue.toasted.show dazu, dass der Code gut funktionierte.
Deshalb: Wenn PAHO Fehlermeldungen ausgibt, kann das mit einem anderen Code zusammenhängen, den Sie eingebaut haben, und nicht unbedingt mit dem internen Paho-Status.
Arbeitscode:
Funktion info(msg){
console.log(msg);
if (typeof Vue !== 'undefined' && typeof Vue.toasted !== 'undefined') {
Vue.toasted.show(msg, {
Aktion : {
text : 'OK',
onClick : (e, toastObject) => {
toastObject.goAway(0);
}
}
});
} sonst {
console.log("... Vue noch nicht verfügbar ...");
}
}
Dieser Code funktioniert, da er auch überprüft, ob Vue.toasted initialisiert wurde.