Понемногу пытаюсь разобраться в GraphQL, но очень тяжело идет.
Суть в том, что хочу через Vuex экшн получить какие-то данные (из открытого API GraphQL), записать их в стейт и пока все. Использую
vue-apollo , но при попытке запроса вебпак выкидывает ошибку:
Код стора:
import Vue from 'vue'
import Vuex from 'vuex'
import gql from 'graphql-tag'
import { ApolloClient } from 'apollo-client'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
ipAddress:[]
},
mutations: {
setIP(state,payload){
state.ipInfo=payload
}
},
actions: {
async GET_INFO({commit},payload){
let ipf=(payload+"").split('.').join(''); // throw away all dots (new API required IP like a solid string)
const response= await ApolloClient.query({
query: gql`{
ipAddress(address: $ip) {
city {
id
country {
name
id
continent {
name
id
}
currencies {
isoCode
}
}
location {
lat
long
}
name
}
}
}`,
variables:{
ip: ipf
}
});
//commit('setIP',response.data);
}
},
modules: {
}
})
Код конфига apollo ( main.js ) :
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import { ApolloClient } from 'apollo-client'
import { createHttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory'
import VueApollo from 'vue-apollo'
Vue.use(VueApollo)
const httpLink = createHttpLink({
// You should use an absolute URL here
uri: 'https://api.everbase.co/graphql?apikey=alpha',
fetch
})
const cache = new InMemoryCache()
// Create the apollo client
const apolloClient = new ApolloClient({
link: httpLink,
cache,
})
const apolloProvider = new VueApollo({
defaultClient: apolloClient,
})
Vue.config.productionTip = false
new Vue({
apolloProvider,
router,
store,
render: h => h(App)
}).$mount('#app')