我使用Vue cli 3创建了一个简单的Vue应用程序,并使用TypeScript进行了配置.我还安装了axios,并试图在mounted()中使用它,以便加载数据并在组件中显示.

以下是代码:

<script lang='ts'>

import { Component, Prop, Vue } from 'vue-property-decorator';
import SearchBar from '@/components/prods_comp/SearchBar.vue';
import ProdsTable from '@/components/prods_comp/ProdsTable.vue';

@Component({
  components: {
    SearchBar,
    ProdsTable,
  },
})
export default class MainProds extends Vue {

  @Prop({ default: 'Produits' }) private message!: string;

  mounted() {
    const baseURI = 'http://localhost:8069';
    this.$http({
      method: 'POST',
      url: baseURI + '/vue_web_services/msg/',
      headers: { 'content-type': 'application/json',},
      data: {
      }
    }).then(function (response) {
      console.log(response.data);
    });
  }
}

</script>

这是一个相当基本的API调用.它起作用了.问题是控制台中不断弹出的消息:

ERROR in D:/ODOO/Vue/bons_commande/src/components/prods_comp/MainProds.vue
26:10 Property '$http' does not exist on type 'MainProds'.
    24 |   mounted() {
    25 |     const baseURI = 'http://localhost:8069';
  > 26 |     this.$http({
       |          ^
    27 |       method: 'POST',
    28 |       url: baseURI + '/vue_web_services/msg/',
    29 |       crossdomain: true,

编辑:这里是main.ts:

import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
import VueSweetalert2 from 'vue-sweetalert2';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import '@/assets/scss/tailwind.scss';
import axios from 'axios';

Vue.config.productionTip = false;
Vue.prototype.$http = axios;

Vue.use(ElementUI);
Vue.use(VueSweetalert2);

new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app');

推荐答案

看起来您可能缺少vue-axios个,这给Vue原型增加了$http个,允许从单个文件组件调用this.$http()个.

为了解决这个问题:

  1. 从命令行安装vue-axios:

    npm i -S vue-axios
    
  2. main.ts中添加以下代码:

    import Vue from 'vue'
    import axios from 'axios'
    import VueAxios from 'vue-axios'
    
    Vue.use(VueAxios, axios)
    

Vue.js相关问答推荐

Vue CDN的html工作,但v—如果不工作

更新 Shopware 管理 CMS 组件中的编辑器视图

使用项目和字段,列跨度为 2 的 Bootstrap-vue 表

VSelect - Select 不适用于 Vuetify 3 中的自定义项目插槽

vue3 ssr 不返回纯 html

如何通过 setup() 发出多个参数?

Vuex:如何等待动作完成?

如何将Vue的主应用程序渲染到body元素?

在 vue.js 中获取当前时间和日期

如何将 ASP.NET Core 2.1 与 Vue CLI 3 集成?

如何修复跨域读取阻塞 (CORB) 阻止了 MIME 类型应用程序/json 的跨域响应问题?

VueJS 组件中的图像未加载

正确的 vueJS 方法将props与数据同步

如何告诉 Vue-cli 我的应用程序的入口点在哪里?

在 .vue 文件中使用 Vue.set() 和 Vue.use()

异步api调用后如何使用vuex getter

错误:找不到模块'@vue/babel-preset-app'

如何在 Vue.js 中延迟 @keyup 处理程序

在鼠标悬停时动态添加和删除类

Apollo 客户端在向服务器发送Mutations 时返回400(错误请求)错误