为什么忽略为vue-resource设置Vue.http?

时间:2017-05-24 21:39:08

标签: javascript vue.js vuejs2 vue-router vue-resource

我正在使用Vue.js 2.3.3,Vue Resource 1.3.3,Vue Router 2.5.3,而我正在尝试设置Vue-Auth。然而,我一直收到一个控制台错误,即Vue.use(VueResource)。我在main.js中设置Vue.use(Router),但由于某种原因,vue-resource没有选择它。

main.js:

Error (@websanova/vue-auth): vue-router.2.x.js : Vue.router must be set.

动作/ index.js

Vue.http.options.root = 'https://api.example.com'

如果我将Uncaught TypeError: Cannot read property 'options' of undefined添加到{{1}}下面的actions / index.js,我会收到一个新错误:{{1}}

另一方面,如果我将{{1}}移到导入语句的正下方,我又会出现另一个错误:{{1}}

2 个答案:

答案 0 :(得分:0)

您需要将'vue-resource'导入到您的main.js文件中以获取此错误:

import Vue from 'vue'
import VueResource from 'vue-resource';
import Actions from 'actions'
import App from './App'

Vue.use(Actions, {
  locales: ['en', 'zh', 'fr']
})

Vue.use(VueResource)
Vue.http.options.root = 'https://api.example.com'

new Vue({
  render: h => h(App),
  watch: {
    lang: function (val) {
      Vue.config.lang = val
    }
  }
}).$mount('#app')

答案 1 :(得分:0)

使用axios而不是vue-resource对我来说是一种有效的设置:

import axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(VueRouter)
Vue.use(VueAxios, axios)

Vue.router = new VueRouter({
  // Your routes.
})

Vue.use(require('@websanova/vue-auth'), {
    auth: require('@websanova/vue-auth/drivers/auth/bearer.js'),
    http: require('@websanova/vue-auth/drivers/http/axios.1.x.js'),
    router: require('@websanova/vue-auth/drivers/router/vue-router.2.x.js'),
})

App.router = Vue.router

new Vue(App).$mount('#app')
  

有关更多指南,您可以参考此出色的教程:https://codeburst.io/api-authentication-in-laravel-vue-spa-using-jwt-auth-d8251b3632e0