先说结论,Vue3项目当前无法继续使用vue-resource进行http请求

今天为自己的Vue3.0项目配置http访问
每次在main.js中进行导入后

import VueResource from "vue-resource"
app.use(router).use(store).use(VueResource).mount('#app')

浏览器控制台就会报错

Object.defineProperties called on non-object

原因

Vue3将原本提供数据对象侦测的API由Object.defineProperties更换为了Proxy
而vue-resource中,就使用到了Object.defineProperties,运行后自然会报错

理由

proxy是真正的在对象层面做了proxy不会去改变对象的结构,Object.defineProperty需要转化数据对象属性为getter、setter 这是比较昂贵的操作

补充

vue-resource自Vue2.0开始就不再更新,所以目前来说Vue3是无法再使用这个插件,建议去使用axios进行http请求,但不保证将来vue-resource是否还会更新至支持Vue3,让我们等待吧【虽然不等也没办法】

解决

使用axios进行http通信

Logo

前往低代码交流专区

更多推荐