#!/bin/bash echo "=== 启动报告生成应用 ===" # 清理旧进程 echo "清理旧进程..." for port in 3002 5173; do pid=$(lsof -t -i:$port 2>/dev/null) if [ -n "$pid" ]; then echo " 关闭端口 $port 上的进程 (PID: $pid)" kill $pid 2>/dev/null sleep 1 kill -0 $pid 2>/dev/null && kill -9 $pid 2>/dev/null fi done sleep 1 # 检查服务器依赖 echo "检查服务器依赖..." cd server if [ ! -d "node_modules" ]; then echo "安装服务器依赖..." npm install fi cd .. # 检查前端依赖 echo "检查前端依赖..." if [ ! -d "node_modules" ]; then echo "安装前端依赖..." npm install fi # 启动 PDF 生成服务器 echo "启动 PDF 生成服务器 (端口: 3002)..." cd server TARGET_URL=http://localhost:5173 nohup node src/index.js > server.log 2>&1 & SERVER_PID=$! cd .. # 等待服务器就绪 echo "等待服务器启动..." for i in $(seq 1 10); do if curl -s http://localhost:3002 > /dev/null 2>&1 || lsof -t -i:3002 > /dev/null 2>&1; then echo "服务器已启动:http://localhost:3002" break fi if [ $i -eq 10 ]; then echo "错误:服务器启动失败!查看 server/server.log" kill $SERVER_PID 2>/dev/null exit 1 fi sleep 1 done # 启动前端开发服务器 echo "启动前端开发服务器 (端口: 5173)..." echo "" echo "前端访问地址:http://localhost:5173" echo "PDF 服务器地址:http://localhost:3002" echo "" echo "按 Ctrl+C 停止所有服务" # 确保 Ctrl+C 能同时停止两个进程 trap "echo '停止服务...'; kill $SERVER_PID 2>/dev/null; exit" INT TERM npm run dev