# 本地测试指南 - 推送前验证 ## ✅ Vercel 配置检查(已通过) ### 检查结果: - ✅ `.vercelignore` 正确配置,会忽略所有后端文件 - ✅ `vercel.json` 配置正确 - ✅ 前端文件完整:index.html, js/, css/, public/, views/ - ✅ 后端文件会被忽略:server/, docker/, scripts/ **结论:Vercel 部署安全,不会上传后端代码** --- ## 🧪 本地测试步骤 ### 测试 1:前端模式(模拟 Vercel) ```bash # 启动简单的 HTTP 服务器 python -m http.server 8000 # 或使用 Node.js npx http-server -p 8000 # 访问 http://localhost:8000 ``` **测试项**: - [ ] 页面正常加载 - [ ] 可以打开文件选择 - [ ] localStorage 正常工作 - [ ] 所有现有功能正常 - [ ] 控制台无错误 --- ### 测试 2:Docker 后端模式 #### 2.1 检查 Docker 环境 ```bash docker --version docker-compose --version ``` #### 2.2 配置环境变量 ```bash cp .env.example .env nano .env ``` **最小配置**: ```env DB_PASSWORD=test123456 JWT_SECRET=test-jwt-secret-minimum-32-characters-long ADMIN_EMAIL=admin@test.local ADMIN_PASSWORD=admin123456 ``` #### 2.3 启动 Docker ```bash # 方式 1: 使用部署脚本 cd scripts ./deploy.sh # 方式 2: 手动启动 docker-compose up -d # 查看日志 docker-compose logs -f app ``` #### 2.4 验证服务 ```bash # 健康检查 curl http://localhost:3000/api/health # 访问前端 open http://localhost:3000 # 访问管理面板 open http://localhost:3000/admin ``` **测试项**: - [ ] 所有容器正常运行 - [ ] 数据库连接成功 - [ ] API 健康检查通过 - [ ] 前端页面正常加载 - [ ] 可以注册用户 - [ ] 可以登录管理面板 - [ ] 数据保存到数据库 #### 2.5 清理 ```bash # 停止服务 docker-compose down # 完全清理(包括数据) docker-compose down -v ``` --- ## 🔍 关键验证点 ### 验证 1:Vercel 不会受影响 **测试方法**:模拟 Vercel 只部署前端文件 ```bash # 创建临时目录,只复制前端文件 mkdir /tmp/vercel-test cp index.html /tmp/vercel-test/ cp -r js css public views /tmp/vercel-test/ cd /tmp/vercel-test # 启动测试 python -m http.server 8001 # 访问 http://localhost:8001 # 应该完全正常工作 ``` ### 验证 2:admin/ 目录是否需要 **检查**: ```bash # admin/ 是否在 .vercelignore 中? grep admin .vercelignore ``` **结果**:`admin/` 没有被忽略,会部署到 Vercel **确认**:这是对的,因为管理面板的 HTML 也可以在前端模式下查看(只是没有后端 API) ### 验证 3:存储适配器是否正确引入 ```bash # 检查 index.html grep storage-adapter.js index.html ``` **预期输出**: ```html ``` **测试**: 1. 打开浏览器控制台 2. 检查 `window.storageAdapter` 是否存在 3. 检查 `window.DEPLOYMENT_MODE` 的值 --- ## 🎯 快速测试脚本 ### 一键测试脚本 ```bash #!/bin/bash echo "==================================" echo " Paper Burner X 本地测试" echo "==================================" echo "" # 测试 1: 前端模式 echo "测试 1: 前端模式(模拟 Vercel)" echo "启动 HTTP 服务器..." python -m http.server 8000 & SERVER_PID=$! sleep 2 echo "→ 测试页面访问" if curl -s http://localhost:8000 > /dev/null; then echo "✅ 前端服务器启动成功" else echo "❌ 前端服务器启动失败" fi echo "→ 打开浏览器手动测试" echo " 访问: http://localhost:8000" read -p "前端测试完成后按回车继续..." kill $SERVER_PID echo "" # 测试 2: Docker 模式 echo "测试 2: Docker 模式" echo "→ 检查 Docker 环境" if command -v docker &> /dev/null; then echo "✅ Docker 已安装" else echo "❌ Docker 未安装,跳过 Docker 测试" exit 0 fi echo "→ 检查 .env 配置" if [ ! -f ".env" ]; then echo "⚠️ .env 不存在,创建默认配置" cp .env.example .env fi read -p "是否启动 Docker 测试?(y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "→ 启动 Docker 服务" docker-compose up -d echo "→ 等待服务启动..." sleep 10 echo "→ 测试 API" if curl -s http://localhost:3000/api/health > /dev/null; then echo "✅ Docker 服务启动成功" echo " 访问: http://localhost:3000" echo " 管理: http://localhost:3000/admin" else echo "❌ Docker 服务启动失败" docker-compose logs app fi read -p "Docker 测试完成后按回车清理..." docker-compose down fi echo "" echo "==================================" echo " 测试完成!" echo "==================================" ``` --- ## ✅ 测试通过标准 ### 前端模式(Vercel) - [ ] 页面正常加载 - [ ] 功能完全正常 - [ ] 无 JavaScript 错误 - [ ] localStorage 工作正常 ### Docker 模式 - [ ] 所有容器运行正常 - [ ] API 响应正常 - [ ] 可以注册/登录 - [ ] 数据持久化工作 ### 无冲突验证 - [ ] 前端代码未被破坏 - [ ] 旧功能全部正常 - [ ] 没有引入 breaking changes --- ## 🚀 测试通过后 如果所有测试都通过,你可以安全地: ```bash git add . git commit -m "feat: add Docker support with full backend" git push origin main ``` **推送后监控**: 1. 立即检查 Vercel 部署状态 2. 访问部署后的 URL 3. 测试主要功能 4. 如有问题立即 revert --- ## 🆘 如果测试失败 ### 前端测试失败 ```bash # 检查是否有文件缺失 git status # 恢复特定文件 git restore # 查看具体错误 浏览器控制台 ``` ### Docker 测试失败 ```bash # 查看日志 docker-compose logs -f app # 检查数据库 docker-compose logs postgres # 重新构建 docker-compose down -v docker-compose up --build ``` --- ## 📞 现在做什么? 选择一个: **A) 运行快速前端测试(5 分钟)** ```bash python -m http.server 8000 # 手动测试功能 ``` **B) 运行完整测试(包括 Docker,15 分钟)** ```bash # 我帮你创建测试脚本 ``` **C) 我相信配置没问题,直接推送** ```bash git add . git commit -m "feat: add Docker support" git push origin main ``` 你选哪个?