[英]axios is not defined in vue js cli
我使用npm install axios
命令npm install axios
这是我的package.json
依赖项
"dependencies": {
"axios": "^0.18.0",
"bootstrap-vue": "^2.0.0-rc.11",
"vue": "^2.5.2",
"vue-router": "^3.0.1"
},
我在main.js
文件中注册了 axios。
import Vue from 'vue'
import VueRouter from 'vue-router'
import BootstrapVue from 'bootstrap-vue'
import axios from 'axios'
import App from './App'
import routerList from './routes'
Vue.use(axios)
Vue.use(BootstrapVue)
Vue.use(VueRouter)
当我尝试在我的一个组件中使用 axios 时,出现此错误:
Uncaught ReferenceError: axios is not defined
如何解决这个问题?
Vue.use
意味着添加插件。 但是, axios
不是Vue
的插件,因此您无法通过use
全局添加它。
我的建议是仅在需要时才导入axios
。 但是如果你真的需要全局访问它,你可能希望将它添加到原型中。
Vue.prototype.$axios = axios
然后,您可以访问axios
在VUE利用this.$axios
在main.js
,添加这一行而不是import axios from 'axios'
window.axios = require('axios');
并删除
Vue.use(axios)
使用window
通常被认为是一种不好的做法,因此您最好按以下方式使用axios
:
在src
目录中创建一个名为plugins
的文件夹。
然后,在该目录中创建axios.js
文件。 我们将把所有的 axios 逻辑放在这里,并使用 axios 作为 Vue 插件。
添加以下内容:
import ax from 'axios'
// insert all your axios logic here
export const axios = ax
export default {
install (Vue, options) {
Vue.prototype.$axios = ax
}
}
src/main.js
,添加以下内容:import Vue from 'vue' // You can skip this line
import VueAxios from './plugins/axios'
Vue.use(VueAxios)
现在,您可以在组件中使用 axios 作为this.$axios
。 所以类似this.$axios.get()
。
因此,您可以使用以下行导入 axios:
import { axios } from '@/plugins/axios'
现在,您可以直接在您的商店中使用axios
。
或者您也可以将其用作 Vuex 插件:
import { axios } from '@/plugins/axios'
const axiosPlugin = store => {
store.$axios = axios
}
new Vuex.Store({
...,
plugins: [axiosPlugin]
})
现在,您可以在 Vuex 中将其用作this.$axios
axios。
使用以下命令安装 axios
npm install axios --save
执行上述命令导入后,如下所述:
import axios from 'axios'
还要安装vue-axios
并在main.js
导入
import VueAxios from 'vue-axios'
然后在main.js
:
Vue.use(VueAxios, axios)
现在,如果我在您的方法中没有弄错,您可以使用例如:
let uri = 'http://localhost:4000/tickets/add';
this.axios.post(uri, this.ticket).then((response) => {
console.log(response);
});
import Vue from 'vue'
import axios from 'axios'
Vue.prototype.$http = axios;
然后在您的组件中,您可以开始使用 axios,如下所示:
{
methods: {
someMethod() {
this.$http.get('/users').then(() => {
// do something
})
}
}
}
包括这一行:
import {AxiosInstance as axios} from "axios";
我在laravel项目window.axios = require('axios');
当我将其插入myproject中时。 一切都很好!
要在Vue Components 中使用,请安装Vue Axios和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)
使用上述解决方案,到目前为止,我在 Vue 组件中使用this
关键字使用axios 时从未遇到过问题。
自定义 JavaScript 文件
但是,我在自定义 JS 文件中使用Axios时遇到了问题,但axios 未定义错误。
以下在自定义 JS 文件中为我工作:
const axios = require("axios");
用法示例:
export default {
fetchProducts() {
return axios.get(`${ROOT_URL}/products`);
},
};
试试这个代码:
import axios from 'axios'
Vue.use(axios)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.