vite+vue3--打包后可动态配置接口请求地址

1,107 阅读1分钟

1. 文件所在目录

2. public文件夹下创建config.js文件

注意要用var变量,不能用const

var PLATFROM_CONFIG = {
    DEV_BASE_URL: 'http://localhost:8080', // 开发环境
    PRO_BASE_URL: 'http://10.64.16.180:8083', // 正式环境
}

3. index.html引入config.js文件

注意点:

(1) 切记一定要是js文件,因为打包后的所有文件都是js,而不能是ts,如果是ts的话会报错;

解决:

不能用ts,要用js

(2) 引入路径,在vite中publicDir配置默认public,在开发时我们可以使用/开头直接访问public 目录下的资源

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

4. 引入全局变量

onsole.log(import.meta.env, window.PLATFROM_CONFIG, 'window.PLATFROM_CONFIG')

const baseUrl =
    import.meta.env.MODE === 'production' ? window.PLATFROM_CONFIG.PRO_BASE_URL : window.PLATFROM_CONFIG.DEV_BASE_URL

const config = {
    // 默认地址请求地址,可在 .env.** 文件中修改
    // baseURL: import.meta.env.VITE_API_BASE_URL as string,
    baseURL: (baseUrl + import.meta.env.VITE_APP_API) as string,
    // 设置超时时间
    timeout: ResultEnum.TIMEOUT as number,
    // 跨域时候允许携带凭证
    // withCredentials: true
}

注意点:

(1) 生产环境在config.js中配置

(2) 测试环境还是走原先的思路,代理请求

const baseUrl =
  import.meta.env.MODE === 'production'
  ? window.PLATFROM_CONFIG.PRO_BASE_URL + import.meta.env.VITE_APP_API
  : import.meta.env.VITE_API_BASE_URL

const config = {
  // 默认地址请求地址,可在 .env.** 和 config.js 文件中修改
  baseURL: baseUrl,
}

(3) .env.development

VITE_API_BASE_URL = /Web   

(4) vite.config.ts

proxy: {
    '/mock': {
        target: 'http://127.0.0.1:4523/m1/3915073-0-default/mock',
        changeOrigin: true,
        ws: true,
        rewrite: (path) => path.replace(/^/mock/, ''),
    },
    '/Web': {
        //设置开发环境代理
        // target: 'http://10.158.27.179:8080/Web', //代理的目标地址(后端设置的端口号)
        target: 'http://127.0.0.1:4523/m1/4089913-0-default/Web',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^/Web/, ''),
        
    },
},

5. 打包后的目录

6. 如何实时修改全局config配置

(1)打开config.js文件

(2)修改PRO_BASE_URL参数,直接保存,重新输入启动命令

7. vue打包好的dist如何在本地运行

8. TS项目需要设置全局ts

类型“Window & typeof globalThis”上不存在属性“PLATFROM_CONFIG”。

declare interface Window {
    PLATFROM_CONFIG: any
}

参考文献: