【问题标题】:Vue - Axios is not definedVue - 未定义 Axios
【发布时间】:2020-03-20 00:43:12
【问题描述】:

在一个 Laravel+Vue 项目中,我尝试使用 axios 来获取 API 响应。 Axios 调用 Laravel 端点并获得控制器响应。

代码看起来

JS

require("./bootstrap");

import Swal from "sweetalert2";
import VueI18n from "vue-i18n";
import VueRouter from "vue-router";
import axios from "axios";

import Vuetify from "vuetify";
import es from "vuetify/es5/locale/es";
import en from "vuetify/es5/locale/en";
import "@mdi/font/css/materialdesignicons.css";

import ContadoresComponent from "./components/ContadorComponent.vue";
import GatewaysComponent from "./components/GatewayComponent.vue";
import MainComponent from "./components/MainComponent.vue";


const routes = [{
        path: "/",
        name: "principal",
        component: MainComponent
    },
    {
        path: "/contadores",
        name: "contadores",
        component: ContadoresComponent
    },
    {
        path: "/gateways",
        name: "gateways",
        component: GatewaysComponent
    }
];

window.Vue = require("vue");
Vue.use(Vuetify);
Vue.use(VueRouter);
Vue.use(VueI18n);
Vue.use(axios);

Vue.component(
    "drawer-component",
    require("./components/DrawerComponent.vue").default
    /*  methods: {
          changeLocale (lang) {
            this.$vuetify.lang.current = lang
          },
    },*/
);

Vue.component(
    "table-component",
    require("./components/TableComponent.vue").default
);

export default new Vuetify({
    icons: {
        iconfont: "mdi"
    },
    lang: {
        locales: {
            es,
            en
        },
        current: "es"
    }
});

const router = new VueRouter({
    routes
});

new Vue({
    vuetify: new Vuetify(),
    router
}).$mount("#app");

Vue(Vuetify)

<template>
  <v-container class="fill-height" fluid>
    <v-row align="center" justify="center">
      <v-card class="mx-auto">
        <v-list-item>
          <v-list-item-content>
            <v-list-item-title class="headline">Contador</v-list-item-title>
          </v-list-item-content>
        </v-list-item>
        <table-component></table-component>
      </v-card>
    </v-row>
  </v-container>
</template>
<script>
axios.get("/contadores").then(response => console.log(response));
</script>

错误:return axios is not defined,但我认为我在 App.js 文件中定义了。

有人看到错误吗?

【问题讨论】:

  • 在 Vue 组件的 &lt;script&gt; 部分,在顶部添加 import axios from 'axios';
  • 控制台返回无法设置未定义的属性'render'

标签: laravel vue.js axios vuetify.js


【解决方案1】:

您仍然需要在第二个文件中导入它。您的脚本标记应如下所示:

<script>
import axios from 'axios';
axios.get("/contadores").then(response => console.log(response));
</script>

【讨论】:

    【解决方案2】:

    您尚未在文件中导入 axios。

    要解决此问题,请将其导入您要使用的文件中,如下所示

    import axios from 'axios';

    如果你不想在使用它的每个组件中导入它,你可以将它添加到 Vue 原型中:

    window.axios = require('axios');
    
    //... configure axios...
    
    Vue.prototype.$http = window.axios;
    

    然后在任何组件中你都可以使用

    this.$http.post('event/store', {
        'name': this.name,
    })
    

    【讨论】:

      【解决方案3】:

      我在项目中使用的一个有趣的方法是使用库vue-axios,它的安装非常简单。如果您需要通过命令npm install --save axios vue-axios 在项目中安装依赖项,然后将其导入到main.js 文件或应用程序的主文件中:

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

      组件中axios的使用会通过this.axios.get(`${url}`)。 StackOverflow 上的朋友已经公开的另一种方法是将 axios 直接导入到您要使用的组件中:

      <template>
      <div>
      ...
      </div>
      </template>
      <script>
      import axios from 'axios';
      
      export default {
         name: 'ComponentName',
         methods: {
            async getAsyncApi() {
               try {
                  const result = await axios.get(`${url}`);
              } catch(e) {
                  window.console.error('Error! ', e.message);
              }
            },
            getApi() {
               let result;
               axios.get(`${url}`).then((r) => {
                 result = r;
               }).catch(e => window.console.error('Error! ', e.message));
            },
         },
      };
      </script>
      

      【讨论】:

        【解决方案4】:

        我修复了错误

        export default {
          mounted() {
            axios
              .get("ENDPOINT")
              .then(response => console.log(response));
          }
        };
        

        【讨论】:

          猜你喜欢
          • 2019-01-01
          • 2019-01-05
          • 1970-01-01
          • 2023-03-03
          • 1970-01-01
          • 2019-04-05
          • 2019-08-15
          • 1970-01-01
          • 2018-11-03
          相关资源
          最近更新 更多