常见错误
| 现象 | 可能原因 | 处理 |
|---|---|---|
| Google 登录后提示没有权限 / 回到登录页 | 邮箱不在 public.users | admin 在 /admin/users 添加相同邮箱 |
| 空库无法登录 | 未设 AUTH_ALLOW_EMPTY_USER_TABLE | 先插入 admin,或仅本地临时开启该变量 |
OAuthAccountNotLinked | 少见;同邮箱用户与 Google 账号未挂上 | 当前 Google provider 已允许 email linking;检查是否用了别的邮箱 |
| 投票页「还没有你的选票」 | 未加入 | /campaigns 加入,或 moderator 批量入卷(仅 voter 角色) |
| 「分配票数须正好等于…」 | 合计≠权重;规则刚改 | 按页面显示的总票重分;管理员执行规则保存以同步 weight |
| 「已完成投票,无法再次提交」 | 已有 allocations | 预期行为;除非清空本场选票 |
| 「管理员不能投票」 | admin 账号 | 换 voter / moderator |
| 「当前投票已结束」 | ongoing=false | 在选票管理开启 |
| Neon 连接失败 / 启动参数错误 | DATABASE_URL 含 search_path | 去掉该 query;SQL 用 public.* |
| 改候选人后票数归零 | 名簿全量替换级联删除 | 投票开始后不要改名单;只能让选民重投(需先清空或他们尚未投) |
页面显示未配置 DATABASE_URL | 环境变量未进进程 | 检查 .env.local 或托管平台配置后重启 |
npm run lint 提示 next lint 将废弃 | Next 16 CLI 变更 | 非阻塞;升级时改 package.json 脚本 |
登录被拒的门禁逻辑见 Authentication。