Задать вопрос
@Miki8887
Front-end разработчик

Почему вылазит ошибка «Cannot read property '$http' of undefined» в Vue?

При обновлении страницы в браузере или с помощью F5 вылазит ошибка:
5bcec5ad2e95a076082473.png
В чем проблема, помогите, пожалуйста, разобраться.
Код в app.vue:
import { GET_WAYBILLS } from './store/actions/waybills.js'
import { mapGetters } from 'vuex'

  export default {
    name: 'App',
    components: {
      Navigation,
    },
    computed: {
      ...mapGetters(['isAuthenticated', 'isMenu', 'urlServer', 'waybills']),

    },
    created() {
      this.getWaybills()
    },
    watch: {
      '$route': 'getWaybills'
    },
    methods: {
      getWaybills() {
        if (this.isAuthenticated && (this.urlServer != '') && (this.waybills == '')) {
          this.$store.dispatch(GET_WAYBILLS).then(() => {
            this.$router.push('/')
          })
        }
      }
    }
  }

Код в main.js:
import VueResource from 'vue-resource'
Vue.use(VueResource)

Код в модуле Vuex:
import mainVue from '../../main.js'
const actions = {
  [GET_WAYBILLS]: ({
                     commit,
                     rootGetters
                   }) => {
    return new Promise((resolve, reject) => {
      mainVue.$http.get(rootGetters.urlServer+'waybills', {
        headers: {
          'Content-Type': 'application/json',
          'x-api-token': localStorage.getItem('user-token'),
        },
      }).then(response => {
        commit(GET_WAYBILLS, response.body)
        resolve(response.body)
      }, response => {
        reject(response)
      })
    })
  }
}
  • Вопрос задан
  • 957 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
@Miki8887 Автор вопроса
Front-end разработчик
Решение проблемы:
Код в модуле Vuex:
import Vue from 'vue' 
...
 Vue.http.post
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
shmatuan
@shmatuan
8 year of Web, 5 years of Vue
Это точно весь код в main.js ?
import VueResource from 'vue-resource'
Vue.use(VueResource)


судя по ошибке - import mainVue from '../../main.js' просто ничего не возвращает, поэтому в main.js должно быть export default Vue

Или использовать через this.$http
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы