axios не определен в vue js cli
Я установил 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"
},
Я зарегистрировал axios в моем файле main.js
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
Как это исправить?
Ответы
Ответ 1
Vue.use
означает добавление плагинов. Однако axios
не является плагином для Vue
, поэтому вы не можете добавлять его глобально с помощью use
.
Моя рекомендация импортирует axios
только тогда, когда вам это нужно. Но если вам действительно нужно получить доступ к нему по всему миру, вы можете добавить его в прототип.
Vue.prototype.$axios = axios
Затем вы можете получить доступ к axios
в vue, используя this.$axios
Ответ 2
Решение 1 (не рекомендуется):
В main.js
добавьте эту строку вместо import axios from 'axios'
window.axios = require('axios');
И удалить
Vue.use(axios)
Решение 2 (рекомендуемый подход):
Использование window
как правило, считается плохой практикой (забавно, что Laravel
действительно использует этот способ), поэтому лучше использовать axios
следующим образом:
1) Создайте папку с именем plugins
внутри вашей директории src
.
2) Затем создайте файл axios.js
внутри этого каталога. Мы разместим здесь всю нашу логику axios и будем использовать axios в качестве плагина Vue.
3) Добавить следующее:
import axios_http from 'axios'
// insert all your axios logic here
export const axios = axios_http
export default {
install (Vue, options) {
Vue.prototype.$axios = axios_http
}
}
4) В 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()
.
Тем не менее, в Vuex, вы не можете получить доступ к this
, чтобы вы получили импортировать axios
из plugins/axios.js
файла.
Следовательно, вы можете импортировать axios со следующей строкой:
import { axios } from '@/plugins/axios'
Теперь вы можете использовать axios
прямо в вашем магазине.
Это!
Ответ 3
Также установите 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);
});
Ответ 4
import Vue from 'vue'
import axios from 'axios'
Vue.prototype.$http = axios;
то внутри вашего компонента вы можете начать использовать аксиомы следующим образом:
{
methods: {
someMethod() {
this.$http.get('/users').then(() => {
// do something
})
}
}
}
Ответ 5
я нашел в проекте window.axios = require('axios');
когда я вставлю его в мой проект. что все будет хорошо!
Ответ 6
Используйте следующую команду для установки npm
npm install axios --save
После выполнения вышеупомянутой команды импорта, как указано ниже:
import axios from 'axios'
Ответ 7
Попробуйте следующие коды:
import axios from 'axios'
Vue.use(axios)