Vue.js 无法使用$http或Vue.http

Vue.js 无法使用$http或Vue.http,vue.js,vuejs2,vue-resource,Vue.js,Vuejs2,Vue Resource,跟进 一系列评论回答了这个问题。下面是import/require语句起作用的原因。我以为他们也做了同样的事 原始问题 我正在尝试使用vue资源对API进行REST调用。到目前为止,我有一个可以正常工作的Vue应用程序,它也使用了Vue材料,并且工作得很好。我只是在获取对http“对象”的引用时遇到了问题,通过它我可以进行get/post/put调用 堆栈基本上是vue cli,用于创建Web包/npm项目vue资源肯定在包中。json: "vue": "^2.2.1", "vue-resour

跟进

一系列评论回答了这个问题。下面是import/require语句起作用的原因。我以为他们也做了同样的事

原始问题 我正在尝试使用
vue资源
对API进行REST调用。到目前为止,我有一个可以正常工作的Vue应用程序,它也使用了
Vue材料
,并且工作得很好。我只是在获取对http“对象”的引用时遇到了问题,通过它我可以进行get/post/put调用

堆栈基本上是
vue cli
,用于创建Web包/npm项目
vue资源
肯定在
包中。json

"vue": "^2.2.1",
"vue-resource": "^1.3.1"
main.js
如下所示:

import Vue from 'vue';
Vue.use(require('vue-material'));
Vue.use(require('vue-resource'));

import App from './App.vue'

console.log(this.$http);

new Vue({
el: '#app',
//other stuff
});

console.log(this.$http);
我放置了那些
console.log
语句,因为我最初遇到了如下错误

cannot read property 'post' of undefined vue resource
果不其然,这两条日志语句都会产生“undefined”<代码>Vue.http产生相同的结果

我做错了什么?有趣的是,
vue材质
运行良好

更新

在Vue实例内部进行检查仍会产生未定义的结果:

mounted: () => {
    console.log(this.$http);
}
更新2——有效的解决方案

谢谢你的评论,它们的结合解决了这个问题。首先更改要导入的
要求

import VueResource from 'vue-resource';
Vue.use(VueResource);
并使用为装入的
创建函数的旧方法:

mounted: function () {
    console.log(this.$http);
}

您需要在Vue实例方法中检查此。$http

import Vue from 'vue';
Vue.use(require('vue-resource'));

new Vue({
  el: '#app',
  mounted: function() {
    console.log(this.$http);
  }
})

你可以试试别的办法。从Vue网站:

“别名
axios
Vue.prototype.$http
。然后您可以在任何Vue实例中使用类似
的方法。$http.get


Vue.prototype.$http=axios
...
这是$http
.get('https://jsonplaceholder.typicode.com/users')
.然后(功能(响应){
vm.users=response.data
})
...

只运行上面的代码对我来说很有用,所以在你的问题中,一定有一些代码遗漏了。请参阅我的评论。一定有什么教程什么的。但是结果是
导入了
vue资源
@thanksd谢谢,我在这个文件中只遗漏了数据、激活和方法属性,所有这些属性都是空的。他肯定有
挂载的
函数定义问题。并同意导入或require都应该起作用,但require在另一种情况下肯定不起作用。此外,在最新版本中,它看起来像是
Vue。不再需要使用
。哦,是的,@user2393012,你在问题中定义
挂载
的方式无法提供正确的
参考。昨天回答了这个问题。
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.15.2/axios.js"></script>
<script>
Vue.prototype.$http = axios

...
this.$http
      .get('https://jsonplaceholder.typicode.com/users')
      .then(function(response) {
        vm.users = response.data
      })
...
</script>