报错Uncaught (in promise) TypeError: Cannot read property ‘on‘ of undefined/mitt无法加进原型里面,打印显示undefined

在尝试使用mitt事件总线时遇到问题,错误发生在main.js中,对`this.$bus`进行打印时显示undefined。经过排查,发现由于在main.js中两次创建了`createApp(App)`,导致mitt无法正确添加到原型链上,从而引发错误。通过删除多余的`createApp`实例解决了问题,但触发该问题的根本原因尚不清楚。

在很多论坛博客看了如何使用mitt但是我写时却出现了问题

错误代码main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import mitt from 'mitt'

createApp(App).use(store).use(router).mount('#app')
createApp(App).config.globalProperties.$bus=new mitt()

然后在Home.vue对this.$bus进行打印

console.log(this.$bus)
this.$bus.on("itemImaeLoad",() =>{
    console.log('-------')
})

然后就报错了打印的结果是undefined

检查了好久在网上找了很多资料都没发现是哪出了问题,自己又尝试每个组件单个引用mitt就不会报错,最后在main.js里修改了一点点代码解决了这个问题

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import mitt from 'mitt'

const app = createApp(App)

app.use(store).use(router).mount('#app')
app.config.globalProperties.$bus=new mitt()

 修改过后再运行

原因是因为两个createApp(App),导致mitt无法添加进原型里面,导致undefined,使得报错,根本原因还没搞明白,有哪位大神知道原理也可帮我解解疑惑。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值