Reputation: 194
I am getting this strange error from Vue when trying to access get request from api using axios, I am getting "TypeError: Cannot read property 'get' of undefined"
<template>
<div class="home">
<h1>{{ msg }}</h1>
<p>Welcome to your new single-page application, built with <a href="https://vuejs.org" target="_blank">Vue.js</a>.</p>
</div>
</template>
<script>
var Vue = require('vue');
// import axios from "axios";
window.axios=require('axios');
export default {
name: 'Home',
props: {
msg: String
},
component: {
},
mounted: function () {
alert('Hi ');
this.axios.get('https://api.github.com/users')
.then(value => {
alert(value);
});
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>
Upvotes: 5
Views: 26455
Reputation: 28404
this
does not reference to window
in your case. A better approach would be importing axios
in the component:
import axios from 'axios';
A more efficient way is to set it once globally in the main.js
file:
Vue.prototype.$http = axios
And using it where ever you want as this.$http
Upvotes: 7