«

vue切换proxy不重启

emer 发布于 2023-2-13 15:12   766 次阅读     


config.json

{ "api": "http://localhost:9001" }
// vue.config.js
const hotRequire = modulePath => {
  // require.resolve可以通过相对路径获取绝对路径
  // 以绝对路径为键值删除require中的对应文件的缓存
  delete require.cache[require.resolve(modulePath)]
  // 重新获取文件内容
  const target = require(modulePath)
  return target
}

...
proxy: {
      '/api': {
        // 如果router有效优先取router返回的值
        target: 'that must have a empty placeholder',
        changeOrigin: true,
        // 每次发起http请求都会执行router函数
        router: () => (hotRequire('./src/utils/config') || {}).api || '',
        ws: true,
        pathRewrite: {
          '^/api': ''
        }
      }
}