记在vue2中使用pinia会导致启用开发工具后报错的问题

pinia 踩坑记录

从代码层面设计者建议使用useStore的方式动态加载,这是避免发生一些意外bug的正确方式。

一开始尝试使用总会有点特殊的想法。根据以前的vuex项目改造template的过程中, 因为看着高频出现的useStore的函数执行,我想当然的理解为应该可以将useStore提前执行然后导出, 此时出现了第一种问题。

import { createPinia } from 'pinia'
import useAppStore from './modules/app'
import useUserStore from './modules/user'
import useTagsViewStore from './modules/tagsView'
import usePermissionStore from './modules/permission'
import useSettingsStore from './modules/settings'
import useCvatStore from './modules/cvat'

const pinia = createPinia()
export default pinia

// 不传pinia会偶尔报错“getActivePinia was called with no active Pinia. Did you forget to install pinia”
export const appStore = useAppStore()
export const userStore = useUserStore()
export const tagsViewStore = useTagsViewStore()
export const permissionStore = usePermissionStore()
export const settingsStore = useSettingsStore()
export const cvatStore = useCvatStore()

1、pinia.mjs?be92:1696 Uncaught Error: [🍍]: getActivePinia was called with no active Pinia. Did you forget to install pinia?
此时以为是vue3 vite的自动导入插件导致默认的加载顺序不一致而引起的问题,后面百度查询到通过useStore(pinia)可以解决此问题。而且在启用vue chrome调试工具后也没有提示错误。

// 不传pinia会报错“getActivePinia was called with no active Pinia. Did you forget to install pinia”
export const appStore = useAppStore(pinia)
export const userStore = useUserStore(pinia)
export const tagsViewStore = useTagsViewStore(pinia)
export const permissionStore = usePermissionStore(pinia)
export const settingsStore = useSettingsStore(pinia)
export const cvatStore = useCvatStore(pinia)

2、虽然问题解决了,不影响实际的功能使用。但是后面在使用vue2+pinia的过程中使用同样的方法改造后,一旦开始vue tools工具就会提示一系列的错误。 在这里插入图片描述

错误提示缺少组件id,因为在组件未挂载的时候执行的useStore函数,然后函数查询组件id未定义,此时就会提示报错。
虽然此错误不影响功能,但是根据定义的store的数量变多,每个store都会提示错误,还是比较影响心态的。有些已经踩坑的歪果仁已经在git上提交了同样的问题。Possible edge case in devtools integration: Cannot read properties of null (reading ‘VUE_DEVTOOLS_APP_RECORD_ID’) #1630
为了避免不必要的麻烦,从根源上就应该避免提前执行的做法。
主要的提前执行的函数位于router导航守卫中。避免问题请务必阅读单页应用程序

小插曲

一开始以为是vue-tools的版本不匹配导致的问题,所以专门去升级了一下版本。最新的版本(Vue.js devtools6.4.5)虽然也是同样的错误,但是错误是立马出现的。而我一开始的版本使5.7.4,此版本内置了一个轮询逻辑,一开始加载是不会有错误的,预期会在一分钟后才提示同样的错误,导致我一开始猜测其他原因浪费了好多时间。
请添加图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值