Files
wechatAiclaw/run-dev.sh
2026-03-11 00:22:41 +08:00

65 lines
1.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -e
cd "$(dirname "$0")"
# 加载本地 .env如果存在便于在开发环境下配置 WECHAT_UPSTREAM_BASE_URL 等
if [ -f ".env" ]; then
set -o allexport
# shellcheck disable=SC1091
. ./.env
set +o allexport
fi
FRONTEND_PORT=${FRONTEND_PORT:-3000}
BACKEND_PORT=${BACKEND_PORT:-8000}
UPSTREAM_URL=${WECHAT_UPSTREAM_BASE_URL:-http://your-wechat-server-host:port}
# 自动结束占用端口的进程macOS / Linux 通用)
kill_port() {
local port=$1
local pids
pids=$(lsof -ti :"${port}" 2>/dev/null || true)
if [ -n "$pids" ]; then
echo "Killing process(es) on port ${port}: ${pids}"
echo "$pids" | xargs kill -9 2>/dev/null || true
fi
}
echo "Checking ports ${FRONTEND_PORT} and ${BACKEND_PORT}..."
kill_port "${FRONTEND_PORT}"
kill_port "${BACKEND_PORT}"
sleep 1
echo "Using ports: frontend=${FRONTEND_PORT}, backend=${BACKEND_PORT}"
echo "WECHAT_UPSTREAM_BASE_URL=${UPSTREAM_URL}"
echo "Ensuring Python venv and backend deps..."
if [ ! -d ".venv" ]; then
python3 -m venv .venv
fi
source .venv/bin/activate
pip install -r backend/requirements.txt >/dev/null
echo "Ensuring Node dependencies..."
npm install >/dev/null
echo "Starting FastAPI backend on :${BACKEND_PORT}..."
WECHAT_UPSTREAM_BASE_URL="${UPSTREAM_URL}" uvicorn backend.main:app --host 0.0.0.0 --port "${BACKEND_PORT}" &
BACKEND_PID=$!
echo "Starting Node frontend dev server on :${FRONTEND_PORT}..."
PORT="${FRONTEND_PORT}" npm run dev &
FRONTEND_PID=$!
trap 'echo "Stopping dev servers..."; kill ${BACKEND_PID} ${FRONTEND_PID} 2>/dev/null || true' INT TERM
# On macOS /posix sh, wait -n is not available; wait on both instead.
wait "${BACKEND_PID}"
wait "${FRONTEND_PID}"