常见问题
本页面收集了 NaviHive 使用过程中的常见问题和解决方案。如果您遇到的问题未在此列出,请在 GitHub 上提交 Issue。
部署相关
如何创建 Cloudflare 账号?
- 访问 Cloudflare 官网
- 点击右上角 "Sign Up" 注册账号
- 验证邮箱后登录
- 在左侧菜单中找到 "Workers & Pages"
- 首次使用需要设置 workers.dev 子域名
TIP
Cloudflare 提供免费的 Workers 计划,每天 10 万次请求,对个人使用完全足够。
部署时提示 "database_id not found" 怎么办?
这表示 wrangler.jsonc 中的数据库 ID 配置不正确。请按以下步骤操作:
- 确保已创建 D1 数据库:
wrangler d1 create navigation-db复制命令输出中的
database_id更新
wrangler.jsonc中的配置:
{
"d1_databases": [{
"binding": "DB",
"database_name": "navigation-db",
"database_id": "YOUR_DATABASE_ID_HERE" // 替换为实际 ID
}]
}- 重新部署:
pnpm deploy部署成功但无法访问,显示空白页面?
可能的原因和解决方案:
1. 数据库未初始化
部署后需要手动初始化数据库:
# 执行初始化 SQL
wrangler d1 execute navigation-db --file=schema.sql2. 路由配置问题
检查 wrangler.jsonc 中的 routes 配置是否正确。
3. 认证配置缺失
确保 wrangler.jsonc 中设置了必要的环境变量:
AUTH_ENABLEDAUTH_USERNAMEAUTH_PASSWORD(bcrypt 哈希)AUTH_SECRET
4. 浏览器缓存问题
尝试清除浏览器缓存或使用无痕模式访问。
如何更新已部署的应用?
# 1. 拉取最新代码
git pull
# 2. 安装依赖(如果有更新)
pnpm install
# 3. 构建并部署
pnpm deploy数据库迁移
如果更新包含数据库结构变更,需要手动执行迁移脚本。查看项目 migrations/ 目录。
可以部署到自己的域名吗?
可以。按以下步骤操作:
- 在 Cloudflare 中添加您的域名
- 更新域名 DNS 设置(使用 Cloudflare DNS)
- 在
wrangler.jsonc中配置routes:
{
"routes": [
{
"pattern": "nav.yourdomain.com/*",
"custom_domain": true
}
]
}- 重新部署
部署失败,提示权限错误?
确保您已登录 Cloudflare:
# 登录
wrangler login
# 验证登录状态
wrangler whoami如果问题持续,检查您的 Cloudflare 账号权限是否包含 Workers 和 D1 的操作权限。
功能相关
如何修改管理员密码?
- 使用命令生成新密码的哈希值:
pnpm hash-password your-new-password复制输出的哈希值(以
$2a$开头)更新
wrangler.jsonc中的AUTH_PASSWORD重新部署:
pnpm deploy安全提示
永远不要在配置文件中存储明文密码!始终使用 bcrypt 哈希。
如何启用访客模式(公开访问)?
访客模式允许未登录用户查看公开内容。
配置方法:
在 wrangler.jsonc 中设置:
{
"vars": {
"AUTH_REQUIRED_FOR_READ": "false" // 启用访客模式
}
}控制内容可见性:
- 登录管理后台
- 编辑分组或站点
- 勾选/取消勾选 "公开" 选项
- 勾选:访客可见
- 不勾选:仅管理员可见
如何自定义页面样式?
- 登录后,点击右上角设置图标
- 在 "自定义 CSS" 区域输入您的样式代码
- 点击保存
示例:
/* 修改背景色 */
body {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
/* 修改卡片样式 */
.MuiCard-root {
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}TIP
自定义 CSS 限制为 50KB,并会自动过滤危险代码以确保安全。
拖拽排序不生效怎么办?
可能的原因:
- 未进入编辑模式:点击 "编辑排序" 按钮进入排序模式
- 浏览器兼容性:确保使用现代浏览器(Chrome、Firefox、Edge、Safari)
- 权限问题:确保已登录管理员账号
- 保存操作:排序后需要点击 "保存排序" 才会持久化
如何批量导入站点?
- 准备 JSON 格式的数据(参考导出格式)
- 登录后台,点击 "导入数据"
- 选择 JSON 文件或粘贴 JSON 内容
- 点击确认导入
导入规则:
- 分组按名称匹配,存在则复用,不存在则创建
- 站点按 URL 匹配(同分组内),存在则更新,不存在则创建
- 配置项会完全替换现有配置
数据备份
导入前建议先导出当前数据作为备份,以防意外。
如何备份我的数据?
方法 1:通过 UI 导出
- 登录后台
- 点击 "导出数据" 按钮
- 保存下载的 JSON 文件
方法 2:通过命令行导出数据库
wrangler d1 export navigation-db --output=backup.sql建议定期备份,尤其是在重要操作前。
安全相关
如何增强系统安全性?
1. 使用强密码和强密钥
# 生成强密码哈希
pnpm hash-password "your-very-strong-password-123!@#"
# AUTH_SECRET 使用至少 32 位随机字符串
# 可使用在线工具生成:https://randomkeygen.com/2. 启用 HTTPS(生产环境默认)
- Cloudflare Workers 自动使用 HTTPS
- 自定义域名需配置 SSL 证书(Cloudflare 免费提供)
3. 定期更新密码
- 建议每 3-6 个月更换一次管理员密码
4. 监控访问日志
# 查看 Worker 日志
wrangler tail5. 限制访问来源
- 如果只需特定 IP 访问,可在 Cloudflare 防火墙中配置规则
系统有速率限制吗?
是的,系统内置了登录速率限制:
- 限制规则:每个 IP 地址 15 分钟内最多尝试登录 5 次
- 触发响应:第 6 次尝试将返回 429 错误(Too Many Requests)
- 重置时间:15 分钟后自动重置计数
这有效防止了暴力破解攻击。
JWT 令牌会过期吗?
会的:
- 标准模式:令牌有效期 7 天
- "记住我" 模式:令牌有效期 30 天
令牌过期后需要重新登录。令牌存储在:
- HttpOnly Cookie(主要,更安全)
- localStorage(备用,兼容性)
如何查看安全日志?
# 实时查看 Worker 日志
wrangler tail
# 筛选错误日志
wrangler tail --status error日志会显示:
- 请求路径和方法
- 错误类型和唯一 ID
- 速率限制触发记录(包含 IP)
技术相关
本地开发时无法连接数据库?
默认情况下,本地开发使用 Mock 模式,无需连接真实数据库。
如果需要使用真实数据库:
- 创建
.env文件:
VITE_USE_REAL_API=true- 启动开发服务器(会同时启动 Workers):
pnpm dev- 确保本地 D1 数据库已初始化:
wrangler d1 execute navigation-db --local --file=schema.sql如何升级 Node.js 版本?
NaviHive 需要 Node.js 16 或更高版本。
# 检查当前版本
node --version
# 推荐使用 nvm 管理 Node 版本
# 安装最新 LTS 版本
nvm install --lts
nvm use --lts升级后重新安装依赖:
pnpm install构建失败,提示 TypeScript 错误?
- 清理缓存:
# 删除 node_modules 和锁文件
rm -rf node_modules pnpm-lock.yaml
# 重新安装
pnpm install- 检查 TypeScript 版本:
# 项目中的 TypeScript 版本
pnpm list typescript- 手动类型检查:
tsc -b如果问题持续,请在 GitHub 提交 Issue 并附上完整错误日志。
如何从 v1.0.x 升级到 v1.1.0?
v1.1.0 引入了访客模式功能,需要数据库迁移。
升级步骤:
- 备份数据:
wrangler d1 export navigation-db --output=backup-before-v1.1.0.sql- 更新代码:
git pull origin main
pnpm install- 执行数据库迁移:
wrangler d1 execute navigation-db --file=migrations/002_add_is_public.sql- 部署新版本:
pnpm deploy- 配置访客模式(可选):
在 wrangler.jsonc 中添加:
{
"vars": {
"AUTH_REQUIRED_FOR_READ": "false"
}
}再次部署:
pnpm deploypnpm 命令不识别怎么办?
NaviHive 使用 pnpm 作为包管理器。如果系统未安装:
# 使用 npm 全局安装 pnpm
npm install -g pnpm
# 或使用 Corepack(Node.js 16.13+ 自带)
corepack enable
corepack prepare pnpm@latest --activate验证安装:
pnpm --version更多帮助
如果您的问题未在此列出:
- 查看文档:浏览左侧菜单中的其他文档页面
- 搜索 Issues:在 GitHub Issues 中搜索类似问题
- 提交 Issue:描述问题、环境信息、错误日志,我们会尽快回复
- 加入社区:在 GitHub Discussions 中与其他用户交流
提问建议
提问时请提供:
- NaviHive 版本
- Node.js 和 pnpm 版本
- 操作系统
- 完整错误日志
- 复现步骤
这将帮助我们更快定位问题。