解决方法

抽离出来一个单独的文件,用来储存 pinia 对象,如下:

1
2
3
import { createPinia } from 'pinia'

export const pinia = createPinia()

注意 main.ts 中的 app.use 也要用这个单独的文件暴露的 pinia 变量(也就是跨文件全局变量),之后再在调用 createDiscreteApi 的地方改成下面这种形式:

1
2
3
4
5
const { message, notification, dialog, loadingBar, app } = createDiscreteApi(
['message', 'dialog', 'notification', 'loadingBar'],
)

app.use(pinia)

现象及原因

报出的警告类似下面的形式:

1
2
[Vue warn]: injection "Symbol(pinia)" not found. 
at <...>

那么我在用 Devtools 的时候观察到了两个 App

两个 App

这时候我才意识到下面这个是由我使用独立 API 而创建的,才找到了引发这个警告的原因。

所以说 Devtools 还是很有用的。就这样,拜拜。