liuq 4 месяцев назад
Родитель
Сommit
5efec2afc3
7 измененных файлов с 63 добавлено и 15 удалено
  1. 5 1
      README.md
  2. 2 1
      package.json
  3. 7 6
      server.js
  4. 12 2
      src/config/backend.js
  5. 13 0
      start-backend.bat
  6. 22 4
      start-dev.bat
  7. 2 1
      vite.config.js

+ 5 - 1
README.md

@@ -424,7 +424,11 @@ VIDEO_ANALYSIS_PASSWORD=your_password
 npm run server
 ```
 
-后端服务器默认运行在 `http://0.0.0.0:8888`(可通过环境变量 `PORT` 修改端口)
+后端服务器默认运行在 `http://localhost:8889`(可通过环境变量 `PORT` 修改端口)
+
+**注意**:如果使用端口映射,请确保防火墙已正确配置:
+- 前端端口:8888
+- 后端端口:8889
 
 #### 5. 工作原理
 

+ 2 - 1
package.json

@@ -8,7 +8,8 @@
     "build": "vite build",
     "preview": "vite preview",
     "server": "node server.js",
-    "dev:all": "concurrently \"npm run dev\" \"npm run server\""
+    "dev:all": "concurrently \"npm run dev\" \"npm run server\"",
+    "start": "concurrently \"npm run dev\" \"npm run server\""
   },
   "dependencies": {
     "vue": "^3.4.21",

+ 7 - 6
server.js

@@ -11,7 +11,7 @@ const __filename = fileURLToPath(import.meta.url);
 const __dirname = dirname(__filename);
 
 const app = express();
-const PORT = process.env.PORT || 8888;
+const PORT = process.env.PORT || 8889;
 
 // 中间件
 app.use(cors({
@@ -671,13 +671,14 @@ app.listen(PORT, '0.0.0.0', () => {
   console.log('\n' + '='.repeat(80));
   console.log('🚀 后端服务器启动成功!');
   console.log('='.repeat(80));
+  console.log(`📍 本地地址: http://localhost:${PORT}`);
   console.log(`📍 服务器地址: http://0.0.0.0:${PORT}`);
-  console.log(`📍 外部访问: http://222.243.138.146:${PORT}`);
+  console.log(`📍 外部访问: http://222.243.138.146:${PORT} (通过防火墙端口映射)`);
   console.log(`\n📋 已配置的自动登录网站: ${Object.keys(autoLoginConfig).join(', ') || '无'}`);
   console.log(`\n🔗 可用端点:`);
-  console.log(`   - 健康检查: http://222.243.138.146:${PORT}/api/health`);
-  console.log(`   - 测试配置: http://222.243.138.146:${PORT}/api/test/:siteId`);
-  console.log(`   - 自动登录: http://222.243.138.146:${PORT}/api/auto-login/:siteId`);
-  console.log(`\n💡 提示: 查看 TROUBLESHOOTING.md 了解问题排查方法`);
+  console.log(`   - 健康检查: http://localhost:${PORT}/api/health`);
+  console.log(`   - 测试配置: http://localhost:${PORT}/api/test/:siteId`);
+  console.log(`   - 自动登录: http://localhost:${PORT}/api/auto-login/:siteId`);
+  console.log(`\n💡 提示: 确保防火墙已配置端口映射 (前端:8888, 后端:8889 -> 外网)`);
   console.log('='.repeat(80) + '\n');
 });

+ 12 - 2
src/config/backend.js

@@ -1,7 +1,17 @@
 // 后端服务器配置
+// 根据当前访问地址自动判断使用本地还是外网地址
+const getBackendBaseURL = () => {
+  // 如果当前页面是通过 localhost 访问的,使用 localhost
+  if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
+    return 'http://localhost:8889'
+  }
+  // 否则使用外网地址(通过防火墙端口映射)
+  return 'http://222.243.138.146:8889'
+}
+
 export const BACKEND_CONFIG = {
-  // 后端服务器地址
-  baseURL: 'http://222.243.138.146:8888',
+  // 后端服务器地址(自动根据访问方式选择)
+  baseURL: getBackendBaseURL(),
   // 自动登录端点前缀
   autoLoginPrefix: '/api/auto-login'
 }

+ 13 - 0
start-backend.bat

@@ -0,0 +1,13 @@
+@echo off
+chcp 65001 >nul
+setlocal
+
+echo ========================================
+echo 启动后端服务器(端口:8888)
+echo ========================================
+echo.
+
+npm run server
+
+endlocal
+

+ 22 - 4
start-dev.bat

@@ -2,15 +2,33 @@
 chcp 65001 >nul
 setlocal
 
-REM 设置端口号(在这里修改端口号)
-set PORT=3000
+REM 设置前端端口号
+set FRONTEND_PORT=8888
+REM 设置后端端口号
+set BACKEND_PORT=8889
 
 echo ========================================
-echo 启动开发服务器(端口:%PORT%)
+echo 启动开发服务器
 echo ========================================
+echo 前端服务器端口: %FRONTEND_PORT%
+echo 后端服务器端口: %BACKEND_PORT%
+echo ========================================
+echo.
+
+REM 检查是否安装了 concurrently
+where concurrently >nul 2>&1
+if %ERRORLEVEL% NEQ 0 (
+    echo 正在安装 concurrently...
+    call npm install -g concurrently
+)
+
+REM 同时启动前端和后端
+echo 正在启动前端和后端服务器...
 echo.
 
-npm run dev -- --port %PORT% --host 0.0.0.0
+concurrently ^
+    "npm run dev -- --port %FRONTEND_PORT% --host 0.0.0.0" ^
+    "npm run server"
 
 endlocal
 

+ 2 - 1
vite.config.js

@@ -4,8 +4,9 @@ import vue from '@vitejs/plugin-vue'
 export default defineConfig({
   plugins: [vue()],
   server: {
-    port: 3000,
+    port: 8888,
     open: true,
+    host: '0.0.0.0',
     allowedHosts: ['api.hnyunzhu.com']
   }
 })