Falta de suscripción de Paho

Problema

AMQJS0005E Error interno. Mensaje de error: No se puede leer la propiedad 'show' de undefined

Este error se muestra de forma esporádica, especialmente cuando se carga toda la página con Shift-Reload.

Solución

Tengo un plugin de Vue.js para mostrar mensajes de "tostado" (Vue.toasted). Actualmente lo uso para fines de depuración.

Todo funcionó bien inicialmente, ya que mi código se ejecutó después de que Vue se inicializara y se cargara toda la página.

Queriendo acelerar la suscripción MQTT, he puesto código para lanzar la suscripción antes.

Aquí es donde me encontré con este error. Tal y como estaba escrito, parecía ser una condición de carrera, ya que no era consistente.

resulta que mis mensajes tostados, que puse para depurar, estaban causando el problema.

función info(msg){
     console.log(msg);
     /*si (typeof Vue !== 'undefined') {
         Vue.toasted.show(msg, {
             acción : {
                 texto : 'OK',
                 onClick : (e, toastObject) => {
                     toastObject.goAway(0);
                 }
             }
         });
     } si no {
         console.log("... Vue no está disponible todavía...");
     }*/   
}

Como ves, eliminando el Vue.toasted.show el código funcionó bien.

Por lo tanto: si OPS lanza mensajes de error, podría estar relacionado con algún otro código que hayas puesto, no necesariamente con el estado interno de Paho.

Código de trabajo:

función info(msg){
     console.log(msg);
     if (typeof Vue !== 'undefined' && typeof Vue.toasted !== 'undefined') {
         Vue.toasted.show(msg, {
             acción : {
                 texto : 'OK',
                 onClick : (e, toastObject) => {
                     toastObject.goAway(0);
                 }
             }
         });
     } si no {
         console.log("... Vue no está disponible todavía...");
     }
}

Este código funciona, ya que también comprueba si Vue.toasted ha sido inicializado.