Как исправить 'TypeError: name.toUpperCase не является функцией' в axios - PullRequest
1 голос
/ 05 июня 2019

Я хочу получить данные из конечной точки dbpedia, с axios в vue js.

Я использую axios.get, чтобы получить данные из dbpedia, и я получил сообщение об ошибке в консоли:

TypeError: name.toUpperCase не является функцией

Как я могу это исправить?

created(){
    this.fetch();
  },
  methods: {
    fetch(){
      axios
      .get('http://id.dbpedia.org/sparql?query=SELECT+DISTINCT+?concept+WHERE+{+?s+a+?concept+}+LIMIT+50', {
        headers: 'Access-Control-Allow-Origin: *'
      }).then(response => {
        /* eslint-disable */
        console.log('SUCCESS');
        console.log(response);
      }).catch((e) => {
        console.log(e);
      })
    }
  },

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Вам нужно изменить свой запрос Axios на это:

methods: {
async fetch () {
await axios.get('https://cors.io/?http://id.dbpedia.org/sparql?query=SELECT+DISTINCT+?concept+WHERE+{+?s+a+?concept+}+LIMIT+50', {
            headers: {'Access-Control-Allow-Origin': *},
             mode: 'cors',
          }).then(response => {
            /* eslint-disable */
            console.log('SUCCESS');
            console.log(response.data);
          }).catch((e) => {
            console.log(e);
          }
     }
}

Пять изменений:

1) Сделано Axios headers объект (обратите внимание, где кавычки)

2) console.log(response.data)

3) Добавлен mode: 'cors'

4) Добавлен префикс cors к URL, поскольку вы извлекаете данные из стороннего домена за пределамисреда вашего хостинга

5) Обернута ваша функция fetch в async await, поскольку axios - это библиотека, основанная на обещаниях.

0 голосов
/ 05 июня 2019

Подобная проблема возникла у меня на этапе обучения и была решена путем создания заголовков как объекта вместо строки:

headers: { 'Access-Control-Allow-Origin': true }
...