封装axios时,创建axios时用到vuex,getter is not defined?

头像
银河车车
    53
    华中科技大学韵苑公寓
    新手上路,请多包涵

    我想根据vuex里的iswx的值来动态改变baseURL,但是显示getters is not defined.请问是什么原因image.png

    import axios from 'axios'
    import store from '@/store'
    import router from '@/router'
    
    // create an axios instance
    const service = axios.create({
      //baseURL: process.env.VUE_APP_BASE_API, 
      baseURL: store.getters.iswx ? process.env.VUE_APP_BASE_API1 : process.env.VUE_APP_BASE_API2,
      timeout: 20000 // request timeout
    })
    阅读 1.2k
    2 个回答

    创建 axios 的时候 vuex 还没有创建,所以 getters is not defined。注意,所有我们 import 进来的 JS 都会先执行一遍,所以你的代码里,service = axios.create() 其实很早就执行了。

    解决的思路一般有两个:

    1. 能否提前 store 的初始化,或者延后 axios 的初始化
    2. 我猜 iswx 是判断执行环境是否是微信?类似这种全局常量建议不要放在状态管理工具里,直接用一个全局对象存下来就好

    意思就是你的store是undefined,具体要看你的'@/store'文件中导出的是什么

    撰写回答
    你尚未登录,登录后可以
    • 和开发者交流问题的细节
    • 关注并接收问题和回答的更新提醒
    • 参与内容的编辑和改进,让解决方法与时俱进
    推荐问题