Pinia-は素子外で使用(vue 2)


開発環境
現在の開発環境はvue 2+組合せapiである.
routerはpiniaのstoreを呼び出し、storeがインストールされていないというエラーが発生しました.
構成部品以外のショップで使用する場合、共通のホームページの要件は次のとおりです.
  • https://pinia.vuejs.org/core-concepts/outside-component-usage.html
  • // ❌ 이러면 임포트 안됨 
    const store = useStore()
    
    router.beforeEach((to, from, next) => {
      // we wanted to use the store here
      if (store.isLoggedIn) next()
      else next('/login')
    })
    
    // 이렇게 사용
    router.beforeEach((to) => {
      // ✅ This will work because the router starts its navigation after
      // the router is installed and pinia will be installed too
      const store = useStore()
    
      if (to.meta.requiresAuth && !store.isLoggedIn) return '/login'
    })
  • でも私のような場合、上記のように適用しても同じエラーが発生しました.
    vue-router.esm.js:16 [vue-router] uncaught error during route navigation:
    vue-router.esm.js:2314 Error: [🍍]: getActivePinia was called with no active Pinia. Did you forget to install pinia?
  • 調べてみると、私と似たような問題に遭遇した人を見つけました.
  • https://github.com/vuejs/pinia/discussions/723
  • https://github.com/vuejs/pinia/discussions/833
  • 試してみる.
  • Vue.use(router)をVueに設定します.私はあなたにuse(PiniaPlugin)の後に呼び出させます...どんなに順番を変えても、routerで定義したbeforeEachが呼び出されてPiniaをインストール!撮られました🤔
  • Piniaがインストールされている次のルータをアクティブにする必要がある場合があります...
  • 試行2(解決済み)
  • main.tsはuseStore(pinia)を呼び出し、beforeEachがuseStoreを使用している間にエラーは発生しません.