NUXT 中间件中未定义 Vuex 存储

Posted

技术标签:

【中文标题】NUXT 中间件中未定义 Vuex 存储【英文标题】:Vuex store is undefined in NUXT middleware 【发布时间】:2018-10-11 17:10:21 【问题描述】:

我正在练习 NUXT,并且从教程中它运行良好。进入NUXT中间件时我的失败。逻辑是如果页面重定向到其他页面,它将进入中间件并使用 axios 获取结果。

中间件/search.js

import axios from 'axios';

export default function ( params, store ) 
    console.log(store)

    return axios.get(`https://itunes.apple.com/search?term=~$params.id&entity=album`)
        .then((response) => 
            console.log(response.data.results);
            store.commit('add', response.data.results)
        )

在此处输入时,store.commit('add'... 将出现

无法读取未定义的属性“提交”

当我回显 commit = undefined。

我错过了什么?我已经尝试过this.$store.commit(...) 仍然未定义。

VUEX

store/index.js

import Vuex from 'vuex'

const createStore = () => 
  return new Vuex.Store(
    state: 
      albums: []
    ,
    mutations: 
      add (state, payload) 
        state.albums = payload
      
    
  )


export default createStore

【问题讨论】:

谢谢先生纠正我的问题 不需要yenmar,它已经附加了。重启本地服务器解决了问题 【参考方案1】:

重新启动开发服务器也对我有用。进行更改时似乎没有重新加载 Vuex。

运行npm run dev,它应该可以工作。

【讨论】:

【参考方案2】:

我从上述教程的 cmets 中找到了解决方案,但如果其他人也遇到困难,我想在这里分享。

停止你的开发服务器 ctrl+C

然后重启你的开发服务器

npm run dev

那么现在在中间件 tnx 中会看到 VUEX

【讨论】:

开发服务器似乎没有重建 vue 存储,这让我摸不着头脑了几个小时...smh

以上是关于NUXT 中间件中未定义 Vuex 存储的主要内容,如果未能解决你的问题,请参考以下文章

Nuxt vuex状态菜单列表:组件中未定义

在从本地存储恢复 Vuex Store 之前执行的中间件

在 Nuxt / Vuex 存储中定义 setter 和 getter 以进行 API 访问

v-on:click 永远不会触发 Nuxt 组件中的按钮,因为中间件

如何在 Vue 自定义中间件中获取 Vuex 更新的 getters 值以进行权限检查?

Vuex 存储在 vue-router 中未定义