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是否已经被初始化。