import { defineConfig, loadEnv } from 'vite'; import vue from '@vitejs/plugin-vue'; import { fileURLToPath, URL } from 'node:url'; // 开发态一律走 Vite 同源代理:前端只请求相对路径 /api/**, // 由 dev server 转发到 VITE_API_TARGET 指向的后端。 // 这样浏览器侧不存在跨域,也不会因为「访问 dev server 用的主机名/协议」 // 与「后端绝对地址」不一致而出现 Failed to fetch。 export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), ''); // 代理目标:优先 VITE_API_TARGET,兼容旧的 VITE_API_BASE,默认本机后端。 const target = env.VITE_API_TARGET || env.VITE_API_BASE || 'http://localhost:8080'; // 启动时打印,便于确认请求究竟被转发到哪台后端。 console.log(`[vite] /api -> ${target}`); return { plugins: [vue()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, server: { host: true, port: 5180, proxy: { '/api': { target, changeOrigin: true, secure: false, }, }, }, }; });