55 lines
1.3 KiB
Bash
Executable File
55 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
echo "=============================="
|
|
echo " 错题蛙 QuizFrog 启动脚本"
|
|
echo "=============================="
|
|
echo ""
|
|
|
|
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
# 启动后端
|
|
echo "[1/2] 启动后端 (port 8000)..."
|
|
cd "$ROOT/backend"
|
|
source venv/bin/activate
|
|
uvicorn app.main:app --reload --port 8000 --host 0.0.0.0 &
|
|
BACKEND_PID=$!
|
|
|
|
sleep 4
|
|
|
|
# 启动前端
|
|
echo "[2/2] 启动前端 (port 3000)..."
|
|
cd "$ROOT/frontend"
|
|
npm run dev -- --hostname 0.0.0.0 &
|
|
FRONTEND_PID=$!
|
|
|
|
sleep 5
|
|
|
|
# 获取局域网IP
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
LAN_IP=$(ipconfig getifaddr en0 2>/dev/null || echo "未检测到")
|
|
else
|
|
LAN_IP=$(hostname -I 2>/dev/null | awk '{print $1}' || echo "未检测到")
|
|
fi
|
|
|
|
echo ""
|
|
echo "=============================="
|
|
echo " 启动完成!"
|
|
echo ""
|
|
echo " 本机访问: http://localhost:3000"
|
|
echo " 局域网访问: http://${LAN_IP}:3000"
|
|
echo " API文档: http://localhost:8000/docs"
|
|
echo "=============================="
|
|
echo ""
|
|
|
|
# 自动打开浏览器
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
open http://localhost:3000
|
|
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
xdg-open http://localhost:3000 2>/dev/null
|
|
fi
|
|
|
|
echo "按 Ctrl+C 停止所有服务"
|
|
|
|
# 等待任一进程退出
|
|
trap "kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit" INT TERM
|
|
wait
|