• vue3+vite+ts配置多个代理并解决报404问题


    之前配置接口代理总是报404,明明接口地址是对的但还是报是因数写法不对;用了vue2中的写法

    pathRewrite改为rewrite

    根路径下创建env文件根据自己需要名命

    .env.development文件内容

    1. # just a flag
    2. ENV='development'
    3. # static前缀
    4. VITE_APP_PUBLIC_PREFIX=""
    5. # 基础模块
    6. VITE_APP_BASIC_PREFIX='/basicSetting'
    7. # 任务模块
    8. VITE_APP_TASK_PREFIX='/task'
    9. # 网关
    10. VITE_APP_GATEWAY_PREFIX='/gateway/admin'
    11. # 主题
    12. VITE_APP_THEME=light
    13. # vue-cli uses the VITE_CLI_BABEL_TRANSPILE_MODULES environment variable,
    14. # to control whether the babel-plugin-dynamic-import-node plugin is enabled.
    15. # It only does one thing by converting all import() to require().
    16. # This configuration can significantly increase the speed of hot updates,
    17. # when you have a large number of pages.
    18. # Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js
    19. VITE_CLI_BABEL_TRANSPILE_MODULES=true

    在vite.config.ts中配置poxy代理

    1. import proxyConfig from './proxy'
    2. const viteConfig = defineConfig(({ mode }) => {
    3. return {
    4. server: {
    5. host: '0.0.0.0', //解决“vite use `--host` to expose”
    6. port: 8080,
    7. open: true,
    8. proxy: proxyConfig
    9. }
    10. }
    11. })
    12. export default viteConfig

    创建proxy.ts文件

    1. import { ProxyOptions } from 'vite'
    2. import { loadEnv } from 'vite'
    3. const env = loadEnv('development', process.cwd())
    4. const proxies: RecordProxyOptions> = {
    5. // 任务模块
    6. [env.VITE_APP_TASK_PREFIX as string]: {
    7. target: 'http://xxx:31249', // 目标地址 --> 服务器地址
    8. changeOrigin: true, // 允许跨域
    9. rewrite: (path) => path.replace(new RegExp(`^${env.VITE_APP_TASK_PREFIX}`), '')
    10. },
    11. [env.VITE_APP_GATEWAY_PREFIX as string]: {
    12. target: 'http://192.168.8.xx:8080', // 目标地址 --> 服务器地址
    13. changeOrigin: true, // 允许跨域
    14. rewrite: (path) => path.replace(new RegExp(`^${env.VITE_APP_GATEWAY_PREFIX}`), '')
    15. }
    16. // 添加其他代理配置
    17. }
    18. export default proxies

    api.ts接口使用

    1. import request from '@/request/request'
    2. import settings from '@/settings'
    3. export function getTaskList(data: any): Res {
    4. return request({
    5. url: settings.taskPrefix + '/adm/detectionTasks/page',
    6. method: 'post',
    7. data
    8. })
    9. }

    其中的settings.ts文件可以不用封装直接写你的env就行;也可以像我一样封装

    1. export default {
    2. /**
    3. * 任务模块
    4. */
    5. taskPrefix: import.meta.env.VITE_APP_TASK_PREFIX,
    6. /**
    7. * 网关服务文件前缀
    8. */
    9. gatewayPrefix: import.meta.env.VITE_APP_GATEWAY_PREFIX
    10. }

    页面中调用接口

    1. import { getTaskList } from '@/api'
    2. const param = {
    3. entity: {},
    4. betweenCondition: {},
    5. page: {
    6. page: 1,
    7. pageSize: 10
    8. }
    9. }
    10. getTaskList(param)
    11. .then((res) => {
    12. console.log(res)
    13. })
    14. .catch((err) => {
    15. console.log(err)
    16. })

    效果:

  • 相关阅读:
    数据库有多少种
    闲话状态模式
    【Java】默认修饰符总结
    【vue+element ui】大屏自适应中el-select下拉内容在低分辨率下显示不全问题解决
    Playnite软件中Extra Metadata Loader视频插件的视频位置能改地方吗
    TCP网络协议
    1.下载安装ESP32开发环境ESP-IDE
    激光雕刻机的雕刻操作
    Eureka介绍与使用
    QCN9024 vs. QCN9274: Performance comparison of wireless network chips
  • 原文地址:https://blog.csdn.net/qq_40190624/article/details/136349895