Problem

AMQJS0005E Internal error. Error Message: Cannot read property ’show‘ of undefined

This error is shown sporadically, especially when you Shift-Reload the whole page.

Solution

I have a Vue.js Plugin to show “toast” messages (Vue.toasted). I currently use it for debugging purposes.

Everything worked fine initially, as my code was executed after Vue was initialized and the whole page loaded.

Wanting to accelerate the MQTT subscription, I put in code to launch the subscription earlier.

This is where I ran into this error. As written, it appeared to be a race condition, as it was not consistent.

it turns out that my toasted messages, which I put in for debug, were causing the trouble.

function info(msg){
     console.log(msg);
     /*if (typeof Vue !== ‚undefined‘) {
         Vue.toasted.show(msg, {
             action : {
                 text : ‚OK‘,
                 onClick : (e, toastObject) => {
                     toastObject.goAway(0);
                 }
             }
         });
     } else {
         console.log(„… Vue not available yet …“);
     }*/   
}

As you see, removing the Vue.toasted.show led to the code performing OK.

Therefore: if PAHO throws error messages, it might be related to some other code you’ve put in, not necessarily to internal Paho state.

Working code:

function info(msg){
     console.log(msg);
     if (typeof Vue !== ‚undefined‘ && typeof Vue.toasted !== ‚undefined‘) {
         Vue.toasted.show(msg, {
             action : {
                 text : ‚OK‘,
                 onClick : (e, toastObject) => {
                     toastObject.goAway(0);
                 }
             }
         });
     } else {
         console.log(„… Vue not available yet …“);
     }
}

This code works, as it also checks whether Vue.toasted has been initialized.