错误:[vuex] 期望字符串作为类型,但发现未定义

Posted

技术标签:

【中文标题】错误:[vuex] 期望字符串作为类型,但发现未定义【英文标题】:Error: [vuex] expects string as the type, but found undefined 【发布时间】:2019-07-25 20:32:10 【问题描述】:

学习 Vuex。我针对example project和document写了一个简单的登录页面,但是当我尝试使用动作函数时,开发者工具只是警告我

这是我的代码:

src/views/Login.vue

handleLogin (formName) 
      this.$refs[formName].validate(valid => 
        if (valid) 
          // to do
          this.$store.dispatch('user/login', this.loginUser)
         else 
          ......
          )
        
      )

src/store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/User/user'
// import info from './modules/info'

Vue.use(Vuex)

export default new Vuex.Store(
  strict: false,
  modules: 
    user,
    // info
  
)

/src/store/modules/User/actions.js

export const userActions = 
  login(commit, loginUser) 
    commit(LOGIN)
    axios.post(`$ API_BASE_USER /login`, loginUser)
         .then(res => 
           console.log(res)
           if (res.status == 200)  commit(LOGIN_SUCCESS, res.data) 
           else  commit(LOGIN_FAILURE, res.data) 
         )
  

/src/store/modules/User/user.js

import  userActions  from './actions'
import  userMutations  from './mutations'
export default 
  namespaced: true,
  state: 
    token: ''
  ,
  actions: Object.assign(, userActions),
  mutations: Object.assign(, userMutations)

【问题讨论】:

可能是namespace: true部分,应该拼写为namespaced: true 它可以工作,但出现了新错误: 【参考方案1】:

我明白了。 起源mutations-type.js export const LOGIN = LOGIN

但是正确的mutation-type.js应该是export const LOGIN = 'LOGIN'

【讨论】:

谢谢,真是个愚蠢的错误。我一直在寻找表单或有效负载中的问题,但后来我注意到我的突变类型没有定义。【参考方案2】:

当您调用 $store.commit() 而不提供参数时也会发生这种情况

【讨论】:

如果您尝试使用的常量未定义或拼写错误,会发生这种情况,需要注意... @DrCord 这就是为什么你应该使用constants for mutation types【参考方案3】:

有类似的情况,突变名称以 CAP() 开头,但实际突变以非 cap() 开头: RetrieveContractorSuccess: 'retrieveContractorSuccess' (之前是 RetrieveContractorSuccess: 'RetrieveContractorSuccess')

【讨论】:

这不是答案。 John - 与 CAPS 不匹配时收到相同的错误消息 - 而不是引号问题 - 恕我直言,这是另一个答案

以上是关于错误:[vuex] 期望字符串作为类型,但发现未定义的主要内容,如果未能解决你的问题,请参考以下文章

React Native 错误:元素类型无效:期望字符串或类/函数,但得到:对象

ReactApp:错误:元素类型无效:期望字符串(用于内置组件)或类/函数(用于复合组件)但得到:对象 [重复]

不变违规:元素类型无效:期望字符串(用于内置组件)或类/函数,但得到:未定义

有类型unicode,但期望之一:bytes tf.train.example

未定义子或函数过程

VueJs 3 - Vuex:未捕获的类型错误:存储不是函数