使用 pinia 时遇到的报错问题(1):“getActivePinia was called with no active Pinia. Did you forget to install pinia?“

技术 · 04-05 · 访问: 556 次

使用 pinia 时遇到的报错问题:“getActivePinia was called with no active Pinia. Did you forget to install pinia?“,此错误通常是在没有注册pinia时就使用了pinia时产生的报错信息

可能你会觉得我已经在 main.ts 中注入了 pinia 了啊?怎么还是报错呢?

这可能是你在使用 pinia 时不规范,如下面代码:

// src/hooks/useUser.ts
import { useUserStore } from '@/store'

const user = useUserStore()

export function useUser() {
  const userName = user.name
  
  return {}
}

有经验的同学可能已经注意到了上面代码的问题所在,这里在 pinia 没有注册的时候就直接 const user = useUserStore() 了,这显然是不对的。

正确的做法是:

// src/hooks/useUser.ts
import { useUserStore } from '@/store'

export function useUser() {
  const user = useUserStore()

  const userName = user.name
  
  return {}
}

我们来看看vue项目的创建顺序,就能够知道这是为什么了

Snipaste_2024-04-05_18-28-49.png

在图1的时候此时我们的 store 是并没有注册的,但是此时再返回看看我们上面的错误代码就能知道,在 store 并未被注册的时候,我们直接使用了 const user = useUserStore() 这样的代码,这显然是不对的,所以此时就会报错。

报错问题处理 pinia报错处理 pinia
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
Theme Jasmine by Kent Liao