#!/bin/bash # 修复 sqlite3 bindings 问题的脚本 # 使用方法: chmod +x fix-sqlite3.sh && ./fix-sqlite3.sh set -e echo "🔧 修复 sqlite3 bindings 问题..." # 颜色定义 GREEN='\033[0;32m' BLUE='\033[0;34m' RED='\033[0;31m' NC='\033[0m' # No Color # 检查编译工具 echo -e "${BLUE}📦 检查编译工具...${NC}" if [[ "$OSTYPE" == "linux-gnu"* ]]; then if command -v apt-get &> /dev/null; then # Debian/Ubuntu if ! command -v python3 &> /dev/null || ! command -v make &> /dev/null || ! command -v g++ &> /dev/null; then echo "正在安装编译工具..." sudo apt-get update sudo apt-get install -y python3 make g++ build-essential fi elif command -v yum &> /dev/null; then # CentOS/RHEL if ! command -v python3 &> /dev/null || ! command -v make &> /dev/null || ! command -v g++ &> /dev/null; then echo "正在安装编译工具..." sudo yum install -y python3 make gcc-c++ fi elif command -v apk &> /dev/null; then # Alpine if ! command -v python3 &> /dev/null || ! command -v make &> /dev/null || ! command -v g++ &> /dev/null; then echo "正在安装编译工具..." sudo apk add --no-cache python3 make g++ fi fi fi # 进入 backend 目录 cd backend # 停止 PM2 服务(如果正在运行) echo -e "${BLUE}⏸️ 停止后端服务...${NC}" pm2 stop just-demo-backend 2>/dev/null || true # 删除旧的 sqlite3 模块 echo -e "${BLUE}🗑️ 清理旧的 sqlite3 模块...${NC}" rm -rf node_modules/.pnpm/sqlite3@* 2>/dev/null || true rm -rf node_modules/sqlite3 2>/dev/null || true # 重新安装 sqlite3 echo -e "${BLUE}📦 重新安装 sqlite3...${NC}" pnpm rebuild sqlite3 || pnpm install sqlite3 --force # 验证安装 echo -e "${BLUE}✅ 验证 sqlite3 安装...${NC}" if node -e "require('sqlite3')" 2>/dev/null; then echo -e "${GREEN}✅ sqlite3 安装成功!${NC}" else echo -e "${RED}❌ sqlite3 安装失败,请检查错误信息${NC}" exit 1 fi # 返回根目录 cd .. # 重启 PM2 服务 echo -e "${BLUE}🚀 重启后端服务...${NC}" pm2 restart just-demo-backend || pm2 start ecosystem.config.js echo "" echo -e "${GREEN}🎉 修复完成!${NC}" echo "" echo "如果问题仍然存在,请尝试:" echo " 1. 完全删除 node_modules: rm -rf backend/node_modules" echo " 2. 重新安装依赖: cd backend && pnpm install" echo " 3. 重启服务: pm2 restart just-demo-backend"