import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' // https://vite.dev/config/ export default defineConfig({ plugins: [ vue(), vueJsx(), // vueDevTools(), ], css: { postcss: './postcss.config.js' }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) }, }, server: { fs: { // 允许访问上层目录的node_modules (用于KaTeX字体等资源) allow: ['..'] }, proxy: { // ===== TTS语音合成服务代理(最具体的路径,优先匹配) ===== '/api/tts': { target: 'http://172.16.29.101:22000', changeOrigin: true, rewrite: (path) => path.replace(/^\/api\/tts/, '/tts'), configure: (proxy, options) => { proxy.on('error', (err, req, res) => { console.log('TTS代理错误:', err); }); proxy.on('proxyReq', (proxyReq, req, res) => { console.log('TTS代理请求:', req.method, req.url); }); proxy.on('proxyRes', (proxyRes, req, res) => { console.log('TTS代理响应:', proxyRes.statusCode, req.url); }); } }, // ===== ReportGenerator API 代理(最具体的路径,优先匹配) ===== '/api/v1/report': { target: 'http://127.0.0.1:28002', changeOrigin: true }, // ===== SSE控制API代理 ===== '/api/v1/sse': { target: 'http://127.0.0.1:28002', changeOrigin: true }, // ===== 新增:认证 API 代理(/api/auth/*, /api/user/*, /api/logs/*, /api/captcha/*) ===== '^/api/(auth|user|logs|captcha|ticket)': { target: 'https://aqai.shudaodsj.com:22000/', // 后端认证服务地址 changeOrigin: true, // 不重写路径,直接转发 }, // 业务 API 代理 '/apiv1': { target: 'http://127.0.0.1:22000', changeOrigin: true, rewrite: (path) => path.replace(/^\/apiv1/, '/apiv1'), } } } })