问题: router.js使用pinia报错 getActivePinia was called with no active Pinia. Did you forget to install
分析原因: 由于在main.js中,不管怎么注册,router总是比pinia先创建,所以,当我们在router.js中使用pinia时,就会出现pinia还未注册的提示,只需要将使用位置迁移即可
看了很多解决方案,到处引入,麻烦-,看看官网的权威处理吧
官网解释: 在组件外使用存储
https://pinia.web3doc.top/core-concepts/outside-component-usage.html
解决方式如下
–在router/index.js
import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores/user'
// ❌ 根据导入的顺序,这将失败
// const userStore = useUserStore()
// console.log('11', userStore.userInfo.token) 此处使用就会报错哟~~~
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
//省略代码、、、
],
scrollBehavior() {
// 始终滚动到顶部
return { top: 0 }
}
})
router.beforeEach(() => {
// ✅ 这将起作用,因为路由器在之后开始导航
// 路由已安装,pinia 也将安装
const userStore = useUserStore()
console.log('11', userStore.userInfo.token)
})
export default router
我欲乘风归去,又恐琼楼玉宇