使用vue-element-admin时,

想在项目打包后,也能通过修改配置文件来更改接口地址等信息

然后搜索得知,可以在public中写一个config.js

window.myconfig = {
  systemName: '信息管理系统',
  requestUrl: 'http://118.xx.xx.77:8000/admin/',
}

然后在index.html中引入

<script type="text/javascript" src="config.js"></script>

之后使用vuex,在getters.js中写

const getters = {
  myconfig: () => window.myconfig
}
export default getters

然后在request.js中获取store.getters.myconfig.requestUrl的信息

但是在request.js中的axios.create上边写store是获取不到的,undefined

经过搜索是因为https://blog.csdn.net/weixin_41721295/article/details/121037017   这篇文章说的原因,但是不知道具体怎么改,然后就在request.js中进行了一些愚笨的处理

写了个teste方法,在这里面初始化一下store,然后返回给axios.create使用

import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
import publicConfig from '/public/source/js/config'
function teste(){
  Vue.use(Vuex)
  const aaa = new Vuex.Store({
    getters
  })
  console.log('store',aaa.getters.myconfig.requestUrl)
  return aaa.getters.myconfig.requestUrl
}
// create an axios instance
const service = axios.create({
  // baseURL: publicConfig.requestUrl || 'http://shuju.me/admin/', // process.env.VUE_APP_BASE_API, // url = base url + request url
  baseURL: teste(),
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 30000 // request timeout
})

如果有大佬遇到这个问题,并能优雅地解决,麻烦留言,谢谢