头像
YIBI

正在加载...

2026-06-21 网站更新日志

2026-06-21部署Bug修复DockerOAuth

概述

本次更新主要解决线上部署的痛点:数据库文件随构建丢失、文章管理路径不一致、点赞功能异常等问题,并大幅简化了部署流程。


数据持久化迁移

问题

之前 .data/db/content/articles/ 都打包在 .output 里,每次 npm run build 重新部署会把数据覆盖。必须手动备份恢复,还容易丢。

方案

将数据库和文章迁出 .output,通过环境变量指向宿主机持久化目录:

环境变量 用途 线上值
NUXT_DATA_DIR 数据库目录 /data/nuxt-data
NUXT_ARTICLES_DIR 文章目录 /data/nuxt-data/content/articles
  • server/utils/db.ts — DB 路径支持环境变量
  • server/utils/articles.ts — 文章路径支持环境变量
  • server/api/articles/write/* — 3 个写入端点同步更新
  • nuxt.config.ts — 删除构建钩子,不再复制数据到 .output

效果

bash
# 现在部署只需两步
npm run build            # 构建
docker restart nuxt      # 重启(数据毫发无损)

点赞 Bug 修复

文章详情页点赞无效

原因[slug].vue<LikeButton :target-id="article.slug" /> 错误引用了不存在的 article.slug,应为路由参数 slug

修复:改为 <LikeButton :target-id="slug" />

文章列表点赞跳转

原因:网格模式下点赞按钮嵌套在 <NuxtLink> 内,点击事件冒泡导致跳转。

修复:点赞按钮外层加 @click.stop.prevent 阻止事件冒泡。


GitHub OAuth 配置修正

  • 修正环境变量命名:NUXT_SITE_URLNUXT_PUBLIC_SITE_URLpublic.* 必须用此前缀)
  • 补充 .env 中缺失的 NUXT_GITHUB_REDIRECT_URINUXT_PUBLIC_SITE_URL
  • nuxt.config.ts 移除 localhost 硬编码默认值

Docker 部署简化

docker-compose

创建 docker-compose.yml,所有配置集中在文件中:

yaml
services:
  nuxt:
    image: node:20-alpine
    container_name: nuxt
    restart: unless-stopped
    volumes:
      - /data/nuxt/.output:/app
      - /data/nuxt-data:/data/nuxt-data
    env_file:
      - .env.docker
    command: node server/index.mjs

.env.docker

环境变量独立文件 /data/nuxt/.env.docker,一次配置后不动。


文章缓存刷新

问题:新建/编辑文章后后台和前端不显示,因为文章列表缓存未清除。

修复articles.ts 新增 clearArticlesCache() 函数,创建/更新/删除文章后自动调用刷新缓存。


技术栈更新

关于页面"网站使用"新增 星造司 标签。


其他优化

  • 友链页面申请格式增加一键复制按钮
  • 技术栈标签从 7 个手写 <span> 重构为 v-for 数据驱动
  • NavLinks 增加游戏和友链的 Live2D 对话文本
  • 友链卡片悬停增加专属看板娘对话
  • devtools 仅在开发环境启用,修复线上 hm.js 连接拒绝错误
  • JSON 数据库损坏自动诊断修复方法整理到文档