vue.js - VueJS - Vue 未定义

标签 vue.js vuex vue-resource

我挑战自己编写一个从 API 获取数据并将其显示在各种组件中的应用程序。我对 VueJS 很陌生。我使用 VueResource 访问 API,使用 VueX 进行状态管理。 我已经设置了我的商店,我已经添加了 Action 、突变和 setter/getter 等。一旦我在我的组件中添加 created 生命周期方法,我就会收到错误消息:

ReferenceError: Vue is not defined
    at Store.eval (eval at <anonymous> (build.js:1017), <anonymous>:11:3)
    at Array.wrappedActionHandler (eval at <anonymous> (build.js:1338), <anonymous>:711:23)
    at Store.dispatch (eval at <anonymous> (build.js:1338), <anonymous>:433:15)
    ...

我的代码如下所示:

主.js

import Vue from 'vue'
import App from './App.vue'
import VueResource from 'vue-resource'
import store from './store/store'

Vue.use(VueResource);

new Vue({
  el: '#app',
  store,
  render: h => h(App)
})

商店.js

import Vue from 'vue'
import Vuex from 'vuex'
import actions from './actions'
import mutations from './mutations'
import getters from './getters'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    products: []
  },
  getters,
  actions,
  mutations
})

export default store

应用.vue

<template>
   ...
</template>

<script>
    import { FETCH_MEALS } from './store/types';

    export default {
      //load meals on page load
      created() {
        this.$store.dispatch(FETCH_MEALS)
      },
      computed: {
        meals() {
          return this.$store.getters.meals
        },
        salads() {
          return this.$store.getters.salads
        },
        lunches() {
          return this.$store.getters.lunches
        },
        starters() {
          return this.$store.getters.starters
        }
      }
    }
</script>

然后我卡住了,我不知道自己做错了什么。你有什么想法吗?

更新

我使用由 vue-cli 生成的典型样板并使用 Webpack 构建 main.js。

Action .js

import { API_ROOT } from '../config'
import * as types from './types';

export default {
  [types.FETCH_MEALS]: ({commit}) => {
    Vue.http.get(API_ROOT + '/meals.json')
    .then(response => response.data)
    .then(meals => {
      commit(types.SET_MEALS, meals)
    })
  }
};

突变.js

import * as types from './types';

export default {
    [types.MUTATE_UPDATE_VALUE]: (state, payload) => {
        state.value = payload;
    }
};

getter.js

import * as types from './types';

export default {
    [types.VALUE]: state => {
        return state.value;
    }
};

最佳答案

我的猜测是您在未列出的内部使用 Vue(如 Vue.set()) actions.js, mutations.jsgetters.js, 但是忘了加上:

import Vue from 'vue'

在该文件的开头。

关于vue.js - VueJS - Vue 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52633753/

相关文章:

javascript - Vuejs 中使用静态 JSON 进行动态路由

javascript - vue View 中的变量作用域

arrays - 多维数组、Vuex 和突变

javascript - Firestore 特定数据读取不适用于变量,但适用于静态值

javascript - Vuejs 和 Vuex 操作 - 请求失败,状态代码为 422

vue.js - 如何从 Vuex 中的突变或 Action 中调用共享辅助函数

javascript - VueJS 资源重新加载内容

laravel - Vuejs 和 Laravel 发布请求 CORS

ios - Nativescript资源图像需要重置iOS模拟器

javascript - 运行 Vuejs 方法后 Prop 值丢失