112 lines
2.6 KiB
Bash
112 lines
2.6 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# 幼儿阅读教学服务平台 - 启动脚本
|
|||
|
|
|
|||
|
|
echo "🚀 启动幼儿阅读教学服务平台..."
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查项目目录
|
|||
|
|
BACKEND_DIR="/Users/retirado/ccProgram/reading-platform-backend"
|
|||
|
|
FRONTEND_DIR="/Users/retirado/ccProgram/reading-platform-frontend"
|
|||
|
|
|
|||
|
|
# 检查Node.js
|
|||
|
|
if ! command -v node &> /dev/null; then
|
|||
|
|
echo "❌ Node.js 未安装,请先安装 Node.js >= 18.0.0"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "✅ Node.js 版本: $(node --version)"
|
|||
|
|
echo "✅ npm 版本: $(npm --version)"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 选择数据库模式
|
|||
|
|
echo "请选择数据库模式:"
|
|||
|
|
echo "1) SQLite(快速启动,无需安装数据库)"
|
|||
|
|
echo "2) PostgreSQL(完整功能,需要先安装PostgreSQL)"
|
|||
|
|
read -p "请输入选择 (1/2): " db_choice
|
|||
|
|
|
|||
|
|
if [ "$db_choice" = "2" ]; then
|
|||
|
|
# PostgreSQL 模式
|
|||
|
|
if ! command -v psql &> /dev/null; then
|
|||
|
|
echo "⚠️ PostgreSQL 未检测到"
|
|||
|
|
echo "请先安装 PostgreSQL 或选择 SQLite 模式"
|
|||
|
|
echo ""
|
|||
|
|
echo "macOS 安装 PostgreSQL:"
|
|||
|
|
echo " brew install postgresql@15"
|
|||
|
|
echo " brew services start postgresql@15"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 使用PostgreSQL
|
|||
|
|
echo "DATABASE_URL=\"postgresql://admin:password@localhost:5432/reading_platform\"" > $BACKEND_DIR/.env.development
|
|||
|
|
else
|
|||
|
|
# SQLite 模式
|
|||
|
|
echo "DATABASE_URL=\"file:./dev.db\"" > $BACKEND_DIR/.env.development
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 添加其他环境变量
|
|||
|
|
cat >> $BACKEND_DIR/.env.development << 'EOF'
|
|||
|
|
NODE_ENV=development
|
|||
|
|
PORT=3000
|
|||
|
|
JWT_SECRET="your-super-secret-jwt-key"
|
|||
|
|
JWT_EXPIRES_IN="7d"
|
|||
|
|
FRONTEND_URL="http://localhost:5173"
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "📦 安装后端依赖..."
|
|||
|
|
cd $BACKEND_DIR
|
|||
|
|
if [ ! -d "node_modules" ]; then
|
|||
|
|
npm install
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "🔧 配置数据库..."
|
|||
|
|
npx prisma generate
|
|||
|
|
|
|||
|
|
if [ "$db_choice" = "2" ]; then
|
|||
|
|
echo "⚠️ 请确保已创建PostgreSQL数据库 'reading_platform'"
|
|||
|
|
echo " 创建命令:"
|
|||
|
|
echo " createdb reading_platform -U admin"
|
|||
|
|
read -p "按Enter继续..."
|
|||
|
|
else
|
|||
|
|
echo "📊 使用SQLite数据库"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
npx prisma migrate dev --name init
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "🚀 启动后端服务..."
|
|||
|
|
npm run start:dev &
|
|||
|
|
BACKEND_PID=$!
|
|||
|
|
|
|||
|
|
# 等待后端启动
|
|||
|
|
sleep 5
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "📦 安装前端依赖..."
|
|||
|
|
cd $FRONTEND_DIR
|
|||
|
|
if [ ! -d "node_modules" ]; then
|
|||
|
|
npm install
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "🚀 启动前端服务..."
|
|||
|
|
npm run dev &
|
|||
|
|
FRONTEND_PID=$!
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "✅ 服务启动完成!"
|
|||
|
|
echo ""
|
|||
|
|
echo "📍 访问地址:"
|
|||
|
|
echo " 前端:http://localhost:5173"
|
|||
|
|
echo " 后端:http://localhost:3000/api/v1"
|
|||
|
|
echo ""
|
|||
|
|
echo "🔑 测试账号:"
|
|||
|
|
echo " 超管端:admin / 123456"
|
|||
|
|
echo ""
|
|||
|
|
echo "按 Ctrl+C 停止所有服务"
|
|||
|
|
|
|||
|
|
# 等待用户中断
|
|||
|
|
wait
|