# 500 错误修复说明 ## 问题描述 页面白屏,报错: ``` [Error] Failed to load resource: the server responded with a status of 500 (Internal Server Error) (guest, line 0) ``` ## 根本原因 数据库表 `User` 缺少新增的字段: - `role` (VARCHAR, 默认值: 'regular') - `isActive` (BOOLEAN, 默认值: true) - `createdAt` (TIMESTAMP, 默认值: NOW()) - `updatedAt` (TIMESTAMP, 默认值: NOW()) 代码在 `createGuestUser()` 和 `authorize()` 函数中尝试访问这些字段,但数据库表中不存在,导致查询失败。 ## 修复步骤 ### 1. 添加缺失的数据库字段 ```sql ALTER TABLE "User" ADD COLUMN IF NOT EXISTS role VARCHAR DEFAULT 'regular' NOT NULL; ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "isActive" BOOLEAN DEFAULT true NOT NULL; ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "createdAt" TIMESTAMP DEFAULT NOW() NOT NULL; ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "updatedAt" TIMESTAMP DEFAULT NOW() NOT NULL; ``` ### 2. 运行数据库迁移 ```bash cd /var/www/ai-chatbot pnpm db:migrate ``` ### 3. 重启应用 ```bash pm2 restart ai-chatbot ``` ## 验证结果 - ✅ 数据库字段已添加 - ✅ 应用已重启 - ✅ Guest 路由正常响应(返回重定向,这是预期行为) ## 当前状态 应用现在应该可以正常访问: - **本地访问**: `http://localhost:3001` ✅ - **穿透访问**: `http://156.225.27.52:5245` ✅ ## 注意事项 1. 所有现有用户需要更新,为它们设置默认的 `role` 和 `isActive` 值 2. 如果还有其他数据库迁移未执行,需要运行 `pnpm db:migrate` ## 后续建议 1. 检查是否有其他数据库迁移未执行 2. 为现有用户更新 `role` 和 `isActive` 字段 3. 确保所有数据库迁移都已正确执行