如何修复 axios 中的“TypeError: name.toUpperCase is not a function”

pir*_*res 6 dbpedia vue.js axios

我想从 dbpedia 端点获取数据,在 vue js 中使用 axios。

我曾经axios.get从 dbpedia 获取数据,但在控制台中出现错误提示:

类型错误: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);
      })
    }
  },
Run Code Online (Sandbox Code Playgroud)

Len*_*eph 6

您需要将您的 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);
          }
     }
}
Run Code Online (Sandbox Code Playgroud)

五个变化:

1)使axios成为headers一个对象(注意引号在哪里)

2)console.log(response.data)

3) 新增mode: 'cors'

4)cors为 URL 添加了前缀,因为您是从托管环境之外的第三方域检索数据

5)将您的fetch函数包装在 中async await,因为 axios 是一个基于 Promise 的库。