From c257dd2b8c981b2bbfa8ac4a3f2aa84b146b2ae5 Mon Sep 17 00:00:00 2001 From: sion123 <450702724@qq.com> Date: Thu, 7 May 2026 03:26:22 +0800 Subject: [PATCH] fix(web): change port to 3007, add auto port cleanup, graceful error handling --- web/client/vite.config.ts | 4 ++-- web/data/meitu-agent.db-shm | Bin 32768 -> 32768 bytes web/data/meitu-agent.db-wal | Bin 103032 -> 115392 bytes web/package-lock.json | 29 +++++++++++++++++++++++++++++ web/package.json | 2 ++ web/server/index.ts | 14 +++++++++++++- 6 files changed, 46 insertions(+), 3 deletions(-) diff --git a/web/client/vite.config.ts b/web/client/vite.config.ts index b4609d2..227f7e7 100644 --- a/web/client/vite.config.ts +++ b/web/client/vite.config.ts @@ -13,9 +13,9 @@ export default defineConfig({ server: { port: 5173, proxy: { - '/api': 'http://localhost:3001', + '/api': 'http://localhost:3007', '/ws': { - target: 'ws://localhost:3001', + target: 'ws://localhost:3007', ws: true, }, }, diff --git a/web/data/meitu-agent.db-shm b/web/data/meitu-agent.db-shm index 861e062ae45c44b2a588c10940889c2635d319e4..3aa8908dbdb0d75655ae40b3eacce3b93656e4af 100644 GIT binary patch delta 177 zcmZo@U}|V!s+V}A%K!t63=9G?Kn_0;zmPTUl4xUG&iek|7OA8Ky7zV@eM|TLyMk2p zFtb7C{zn2(aV7?tiH+GC9|$>Z{^#^bicxCw$JoD2jM5uF{$yemV31^x0kJkeOOuiW E0K*_V0ssI2 delta 181 zcmZo@U}|V!s+V}A%K!q55G)`Gr1^ok)r@nVEl+QQeb<4IKy zGzttr=Keb*loRL6ejWl#hCa`GVpKYJGnVg zU@u>NV=5C{sBDw3agwR2acWYUrLIA0qM5EqVseVEMM|25u7O3eQEHk&s#&suWnw{Q ze0FMOakY}8Ux-JLe}JcRysy8DtB;bEQc7xSL2+towr-h;Zb4Cgv|(LB~KI9kWVU}ftg(4F> LvnXdtYHsTf-K{ib((<@dYjb diff --git a/web/package-lock.json b/web/package-lock.json index d233910..a9b5fe1 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -34,6 +34,7 @@ "@vitejs/plugin-react": "^4.3.0", "autoprefixer": "^10.4.0", "concurrently": "^9.1.0", + "kill-port": "^2.0.1", "postcss": "^8.4.0", "tailwindcss": "^3.4.0", "tsx": "^4.19.0", @@ -2677,6 +2678,13 @@ "node": ">= 0.4" } }, + "node_modules/get-them-args": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/get-them-args/-/get-them-args-1.3.2.tgz", + "integrity": "sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw==", + "dev": true, + "license": "MIT" + }, "node_modules/get-tsconfig": { "version": "4.14.0", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", @@ -2955,6 +2963,20 @@ "node": ">=6" } }, + "node_modules/kill-port": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kill-port/-/kill-port-2.0.1.tgz", + "integrity": "sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-them-args": "1.3.2", + "shell-exec": "1.0.2" + }, + "bin": { + "kill-port": "cli.js" + } + }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -3971,6 +3993,13 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, + "node_modules/shell-exec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shell-exec/-/shell-exec-1.0.2.tgz", + "integrity": "sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg==", + "dev": true, + "license": "MIT" + }, "node_modules/shell-quote": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", diff --git a/web/package.json b/web/package.json index 8e6e5e6..518109a 100644 --- a/web/package.json +++ b/web/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "dev": "concurrently \"npm run dev:server\" \"npm run dev:client\"", + "predev:server": "npx kill-port 3007", "dev:server": "tsx watch server/index.ts", "dev:client": "vite --config client/vite.config.ts", "build": "vite build --config client/vite.config.ts", @@ -36,6 +37,7 @@ "@vitejs/plugin-react": "^4.3.0", "autoprefixer": "^10.4.0", "concurrently": "^9.1.0", + "kill-port": "^2.0.1", "postcss": "^8.4.0", "tailwindcss": "^3.4.0", "tsx": "^4.19.0", diff --git a/web/server/index.ts b/web/server/index.ts index 7de838c..28b0c48 100644 --- a/web/server/index.ts +++ b/web/server/index.ts @@ -25,8 +25,20 @@ app.use('/api/configs', configsRouter); wss.on('connection', handleChat); -const PORT = 3001; +const PORT = 3007; initDb(); + +server.on('error', (err: NodeJS.ErrnoException) => { + if (err.code === 'EADDRINUSE') { + console.error(`Port ${PORT} is in use. Run: npx kill-port ${PORT}`); + process.exit(1); + } + throw err; +}); + server.listen(PORT, () => { console.log(`Server running on http://localhost:${PORT}`); }); + +process.on('SIGTERM', () => { server.close(); process.exit(0); }); +process.on('SIGINT', () => { server.close(); process.exit(0); });