Импорт зависимостей работает в одном файле, но не в другом - PullRequest
0 голосов
/ 11 ноября 2019

Я начинаю приключение с Vuex и создаю некоторый модуль авторизации. Нашел несколько примеров, которым я пытаюсь следовать, но застрял, пытаясь использовать axios в магазине. Мой магазин имеет отдельные файлы индекса, действий, геттеров и т. Д.

Действие login работает, когда оно находится в действиях в store/index.js, но когда я помещаю его в файл store/actions.js, оно говорит, что axios не определено.

store / index.js

import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
// import example from './module-example'

Vue.use(Vuex)

/*
 * If not building with SSR mode, you can
 * directly export the Store instantiation
 */
import state from './state'
import getters from './getters'
import mutations from './mutations'
import actions from './actions'


export default function(/* { ssrContext } */) {
  const Store = new Vuex.Store({
    modules: {
      // example
    },
    namespaced: false,
    getters,
    mutations,
    actions,
    state,
    // enable strict mode (adds overhead!)
    // for dev mode only
    strict: process.env.DEV,
  })

  return Store
}

store / actions.js

export default {
  login({ commit }, user){
    return new Promise((resolve, reject) => {
      commit('auth_request')
      axios({ url: 'http://localhost:3000/login', data: user, method: 'POST' })
        .then(resp => {
          const token = resp.data.token
          const user = resp.data.user
          localStorage.setItem('token', token)
          axios.defaults.headers.common['Authorization'] = token
          commit('auth_success', token, user)
          resolve(resp)
        })
        .catch(err => {
          commit('auth_error')
          localStorage.removeItem('token')
          reject(err)
        })
    })
  }
}

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019
import axios from 'axios'

Это должно быть только в файле actions.js, потому что именно там вы его используете. И да, вам нужно импортировать его в каждый файл отдельно или использовать глобальные переменные.

0 голосов
/ 11 ноября 2019

определяет глобальность axios в точке входа приложения (app.js или что-то в этом роде):

global.axios = require('axios')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...