From 45346405c22e7722bba98751679788e8cd24b1f4 Mon Sep 17 00:00:00 2001 From: jianf <2198972886@qq.com> Date: Mon, 17 Aug 2026 12:07:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20vite=20dev=20proxy=20=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E5=AF=B9=E9=BD=90=207500=EF=BC=88=E6=94=AF=E6=8C=81=20VITE=5FP?= =?UTF-8?q?ROXY=5FTARGET=20=E8=A6=86=E7=9B=96=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原指向 127.0.0.1:17650 与后端默认 -addr 127.0.0.1:7500 不符;同步 @types/node devDependency 并纳入 tsconfig --- plan.md | 4 ++-- web/package-lock.json | 22 ++++++++++++++++++++-- web/package.json | 1 + web/tsconfig.json | 2 +- web/vite.config.ts | 19 +++++++++++-------- 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/plan.md b/plan.md index 168d318..055c4c5 100644 --- a/plan.md +++ b/plan.md @@ -31,7 +31,7 @@ ## 已知问题(审查发现,待修复) 1. ~~设置保存失效(P0)~~ **已修复**:`server.go` 的 `NewServeMux` 现在对 `PUT /api/manager/settings` 分发到 `handleSettingsPut`,新增 `TestSettingsPutRoundTrip` 回归测试,前端 SettingsView 保存生效。 -2. **dev proxy 端口不一致**:`web/vite.config.ts` 的 proxy 指向 `127.0.0.1:17650`,与后端默认监听 `127.0.0.1:7500` 不符,前端 dev 联调需对齐。 +2. ~~dev proxy 端口不一致~~ **已修复**:`web/vite.config.ts` proxy 指向 `127.0.0.1:7500`(可用 `VITE_PROXY_TARGET` 覆盖),与后端默认一致。 3. **冗余依赖**:`vue-router` 在 package.json 依赖中但未被使用(App.vue 以视图 ref 手动切页,无路由)。 4. **README 笔误**:架构图写 `cmds/webui4frpc`,实际目录为 `cmd/webui4frpc`。 @@ -77,7 +77,7 @@ ## 建议推进顺序 1. [x] 修复「设置保存失效」——给 `PUT /api/manager/settings` 补注册(server.go 方法分发 + httpapi 单测) -2. 对齐 dev proxy 端口(vite.config.ts → 7500) +2. [x] 对齐 dev proxy 端口——vite.config.ts → 7500(支持 VITE_PROXY_TARGET 覆盖) 3. M1 高级传输参数(store 加列 → render 输出 → 前端折叠表单 → 单测回归) 4. M5 补一键构建脚本 / CI diff --git a/web/package-lock.json b/web/package-lock.json index b276055..a68d307 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,11 +1,11 @@ { - "name": "webui-frpc-web", + "name": "webui4frpc-web", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "webui-frpc-web", + "name": "webui4frpc-web", "version": "0.1.0", "dependencies": { "@vue-flow/background": "^1.3.2", @@ -16,6 +16,7 @@ "vue-router": "^4.5.0" }, "devDependencies": { + "@types/node": "^26.2.0", "@vitejs/plugin-vue": "^6.0.3", "@vue/tsconfig": "^0.8.1", "sass-embedded": "^1.102.0", @@ -1263,6 +1264,16 @@ "@types/lodash": "*" } }, + "node_modules/@types/node": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.2.0.tgz", + "integrity": "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, "node_modules/@types/web-bluetooth": { "version": "0.0.20", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", @@ -2729,6 +2740,13 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", + "dev": true, + "license": "MIT" + }, "node_modules/varint": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", diff --git a/web/package.json b/web/package.json index 16adbdb..2bcddd6 100644 --- a/web/package.json +++ b/web/package.json @@ -17,6 +17,7 @@ "vue-router": "^4.5.0" }, "devDependencies": { + "@types/node": "^26.2.0", "@vitejs/plugin-vue": "^6.0.3", "@vue/tsconfig": "^0.8.1", "sass-embedded": "^1.102.0", diff --git a/web/tsconfig.json b/web/tsconfig.json index 0630788..c8d5857 100644 --- a/web/tsconfig.json +++ b/web/tsconfig.json @@ -16,5 +16,5 @@ "noUnusedParameters": true, "noFallthroughCasesInSwitch": true }, - "include": ["src/**/*.ts", "src/**/*.vue"] + "include": ["src/**/*.ts", "src/**/*.vue", "vite.config.ts"] } diff --git a/web/vite.config.ts b/web/vite.config.ts index 8fbb845..7fd20a2 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -1,14 +1,17 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' -import { fileURLToPath } from 'node:url' +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import { fileURLToPath } from "node:url"; + +// Backend default port (cmd/webui4frpc -addr). Override with VITE_PROXY_TARGET. +const backend = process.env.VITE_PROXY_TARGET || "http://127.0.0.1:7500"; // The frontend is served by the Go binary at / (embedded dist), and talks to // the same origin via /api/manager/*. export default defineConfig({ plugins: [vue()], - base: '/', + base: "/", resolve: { - alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) }, + alias: { "@": fileURLToPath(new URL("./src", import.meta.url)) }, }, css: { preprocessorOptions: { @@ -18,11 +21,11 @@ export default defineConfig({ }, }, build: { - outDir: 'dist', + outDir: "dist", }, server: { proxy: { - '/api': 'http://127.0.0.1:17650', + "/api": backend, }, }, -}) +});