pinia踩坑记录
- 打开浏览器控制台,出现这个报错
- 不要慌,遇到错误先百度一下
打开pinia官网看一下,这里写的还是很清晰的。
意思就是说:在setup()
中,你可以随便使用useStore
,隐含意思就是在js
或别的文件中,就不能随便用了。
这是由于script setup
是一个特殊的语法状态,他会在 JS 前置执行。
- 下面是官网的两个例子
官网也写了,解决这个问题的方法:
最简单方法是延迟调用 useStore(),方法是将它们放在安装 pinia 后始终运行的函数中
ok,咱们再回到项目的报错上面。
怎么找出原因呢?
因为我的习惯是const store = useXxxstore
,所以使用全局搜索
- 可以看到我这个项目,在这个
request.js
里面,useStore
写到了外面,这里只需要把标红的代码放到拦截器里面即可。 - 原因:request 他是一个特殊的js文件,它会在程序开始的时候立刻执行(因为调用了接口)。但是这时
pinia
还没有初始化完成,所以才会报错
然后就解决bug啦,具体情况根据自己的代码来,主要办法就是:延迟调用 useStore()