Почему у меня TypeError: Невозможно прочитать свойство 'protocol' undefined, используя ax ios с vue? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь выполнить простой запрос get на мой сервер с помощью ax ios. Я получаю эту трассировку стека в консоли:

TypeError: Cannot read property 'protocol' of undefined
    at isURLSameOrigin (isURLSameOrigin.js?3934:57)
    at dispatchXhrRequest (xhr.js?b50d:109)
    at new Promise (<anonymous>)
    at xhrAdapter (xhr.js?b50d:12)
    at dispatchRequest (dispatchRequest.js?5270:52)

Вот файлы кодов: https://gist.github.com/DavidMarcu/68f6bd20fa1e21568464f10e2a2baa6a Код: store / index. js

import Vue from 'vue'
import Vuex from 'vuex'
import bookService from '@/service/BookService.js';

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    books: []
  },
  mutations: {
    SET_BOOKS(books) {
      this.state.books = books
    }
  },
  actions: {
    fetchBooks(context) {
      bookService.getAllBooks()
        .then(response => {
          console.log(response)
          context.commit('SET_BOOKS', response.data)
      })
        .catch(error => {
          console.log(error)
        })
    }
  },
  modules: {
  }
})

Home. vue (просмотр компонента) - шаблон не имеет значения

<script>
import BookElement from "@/components/BookElement.vue";
export default {
  components: {
    BookElement
  },
  created() {
    this.$store.dispatch("fetchBooks");
  },
  computed: {
    books() {
      return this.$store.state.books;
    }
  }
};
</script>

<style scoped>
</style>

BookService. js


import axios from 'axios';

const apiClient = axios.create({
  baseUrl: `http://localhost:9001/books`,
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  }
})

const bookService = {
  getAllBooks() {
    return apiClient.get()
  }
}

export default bookService

Я попробовал решение для плагина (vue -ax ios), но я не понимаю всех этих хлопот только из-за запроса get, который находится даже не в файле. vue, а в файле. js, который я импортирую в свой компонент. Пакет ax ios действительно установлен. Я ожидаю увидеть в компоненте Home в vue devtools, что в вычисляемом свойстве books у меня есть тело ответа.

Редактировать: я добавил код в вопрос также.

1 Ответ

2 голосов
/ 21 апреля 2020

Вы не передали URL-адрес get:

Измените его следующим образом:

return apiClient.get('/')
...