import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { fileURLToPath, URL } from 'node:url' // https://vitejs.dev/config/ export default defineConfig({ plugins: [ vue(), // 修复 Vite 内部 viteTransformMiddleware 调用 decodeURI 时遇到格式错误的 URL // 导致 "URI malformed" 错误的问题。在 Vite 中间件之前拦截并安全处理。 { name: 'fix-uri-malformed', configureServer(server) { server.middlewares.use((req, res, next) => { if (req.url) { try { // 预检 URL 是否可被 decodeURI 安全解码 decodeURI(req.url) } catch (_e) { // URL 包含无效的百分号编码序列,直接返回 400,避免进入 Vite 内部中间件 console.warn(`[fix-uri-malformed] 拦截到格式错误的请求 URL,已返回 400`) res.statusCode = 400 res.end() return } } next() }) }, }, ], // 开发服务器配置 server: { host: '0.0.0.0', port: 5173, // 禁用 HMR 错误覆盖层,避免非致命错误(如 URI malformed)遮挡页面 hmr: { overlay: false, }, // 代理配置:将 /api 和 /public 请求转发到后端服务 proxy: { '/api': { target: 'http://127.0.0.1:7001', changeOrigin: true, }, '/public': { target: 'http://127.0.0.1:7001', changeOrigin: true, }, }, }, // 路径别名配置 resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, })