Paho未能订阅

问题

AMQJS0005E 内部错误。错误信息。不能读取未定义的属性'show'。

这个错误是零星出现的,特别是当你用Shift-Reload加载整个页面时。

解决方案

我有一个Vue.js插件来显示 "敬酒 "信息(Vue.toasted)。目前我把它用于调试目的。

最初一切都很正常,因为我的代码是在Vue初始化和整个页面加载后执行的。

为了加速MQTT订阅,我在代码中加入了提前启动订阅。

这就是我遇到这个错误的地方。按照写法,这似乎是一个竞赛条件,因为它不一致。

事实证明,我为调试而放入的烤漆信息造成了麻烦。

函数 info(msg){
     console.log(msg)。
     /*if (typeof Vue !== 'undefined') {
         Vue.toasted.show(msg, {
             行动:{
                 text : 'OK',
                 onClick : (e, toastObject) => {
                     toastObject.goAway(0)。
                 }
             }
         });
     } else {
         console.log("......Vue还不能用......")。
     }*/   
}

正如你所看到的,去掉Vue.toasted.show后,代码的表现还不错。

因此:如果PAHO抛出错误信息,可能与你放入的一些其他代码有关,不一定与Paho内部状态有关。

工作代码。

函数 info(msg){
     console.log(msg)。
     如果(typeof Vue !== 'undefined' && typeof Vue.toasted !== 'undefined') {
         Vue.toasted.show(msg, {
             行动:{
                 text : 'OK',
                 onClick : (e, toastObject) => {
                     toastObject.goAway(0)。
                 }
             }
         });
     } else {
         console.log("......Vue还不能用......")。
     }
}

这段代码是有效的,因为它还检查了Vue.toasted是否已经被初始化。