惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
V
Visual Studio Blog
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
Last Week in AI
Last Week in AI
C
Check Point Blog
D
Docker
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
博客园 - 叶小钗
博客园 - 聂微东
The Cloudflare Blog
云风的 BLOG
云风的 BLOG
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
MyScale Blog
MyScale Blog
WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
腾讯CDC
S
SegmentFault 最新的问题
博客园 - 【当耐特】

Donghai's Blog

使用DBeaver连接Dynamics 365 Dataverse | Donghai C# 技术备忘 - LINQ | Donghai 为Astro站点添加Google Analytics | Donghai C# 技术备忘 - LINQ - Donghai’s Blog 20260819 说些什么 | Donghai Dynamics 365 interview questions | Donghai C# 技术备忘 (1) | Donghai Dynamics 365 事件框架、事件执行管道 | Donghai 马拉松配速表 | Donghai 马拉松赛事分级 | Donghai 抖音创作日志(2026年) | Donghai 2026年跑步日志(5月开始) | Donghai 2FA | Donghai 初尝Github Actions | Donghai Dynamics 365集中视图/聚焦视图/Focused View | Donghai AstroPaper主题添加GitHub风格的Markdown警告框 | Donghai AstroPaper主题自定义记录 | Donghai 我日常收藏的优质网站资源导航(持续更新) | Donghai 如何从归档页批量获取URL并提交到Bing Webmaster Tools | Donghai PaperMod 使用 Zeoseven 自定义网页字体 | Donghai 我常用的Prompt | Donghai Hugo默认时区导致本地预览文章不显示 | Donghai 通过手动提交工单解决Bing不收录网站问题 | Donghai 如何访问 Power BI 管理门户(Power BI Admin Portal) | Donghai 还在手敲时间戳?Win11输入法一个技巧,秒输当前时间戳 | Donghai 工作术语备忘录(持续更新) | Donghai 使用XrmToolBox导出安全角色表级权限到Excel | Donghai 24年的年终总结 | Donghai World笔记 | Donghai Excel笔记 | Donghai
AstroPaper主题添加Waline评论 | Donghai
Donghai · 2026-04-27 · via Donghai's Blog

记录为 Astro Paper 主题集成 Waline 评论系统的完整步骤。

Table of contents

Open Table of contents
  • 步骤 1:部署 Waline 服务端
  • 步骤 2:注册管理员账号
  • 步骤 3:集成到 Astro paper
  • 步骤 4:在文章中引入组件
  • 常见问题

步骤 1:部署 Waline 服务端

访问:部署Waline服务端

步骤 2:注册管理员账号

部署完成后,访问 https://waline.yourdomain.com/ui,注册第一个账号,这个账号会自动成为管理员,可以登录管理后台审核评论、查看数据统计。

NOTE

如果点击“注册”提示:403 Forbidden 错误,请检查 SECURE_DOMAINSSITE_URL 环境变量。例如我的博客地址是 mysite.com,Waline评论地址是 waline.mysite.com,那么这两个环境变量应该这样填写:SECURE_DOMAINS=mysite.com,comments.mysite.comSITE_URL=mysite.com

步骤 3:集成到 Astro paper

(1)安装 Waline 客户端

npm install @waline/client

(2)创建 Waline 组件

---

---

<div id="waline"></div>

<script>
  import { init, type WalineInstance } from "@waline/client";
  import "@waline/client/waline.css";
  import { any } from "astro:schema";

  function loadWaline() {
    const walineInstance = init({
      el: "#waline",
      serverURL: "https://xxx.xxx.com", // 改成你的Waline域名
      path: window.location.pathname,
      lang: "zh-CN",
      dark: 'html[data-theme="dark"]', // 自动适配暗色模式
      imageUploader: false, // 关闭图片上传功能
      login: "disable", // 禁止第三方登录
      search: false, // 关闭表情包搜索
      emoji: [
        "//unpkg.com/@waline/emojis@latest/weibo",
        "//unpkg.com/@waline/emojis@latest/bilibili",
      ],
      meta: ["nick", "mail"],
      requiredMeta: ["nick"], // 设置昵称必填
      pageSize: 10,
    });

    return walineInstance;
  }

  // 存储实例,方便页面切换时销毁
  /** @type {import('@waline/client').WalineInstance | null} */
  let walineInstance: WalineInstance | null = null;

  // 页面首次加载
  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", () => {
      walineInstance = loadWaline();
    });
  } else {
    walineInstance = loadWaline();
  }

  // 【关键】视图过渡路由兼容
  document.addEventListener("astro:page-load", () => {
    if (walineInstance && walineInstance.destroy) {
      walineInstance.destroy();
    }
    walineInstance = loadWaline();
  });
</script>

<style>
  #waline {
    margin-top: 2rem;
  }
</style>src/components/Waline.astro

步骤 4:在文章中引入组件

比如我们把评论区放在“分享这篇文章:”下方:

<ShareLinks />

<!-- 评论区 -->
<Waline />

<hr class="my-6 border-dashed" />src/layouts/PostDetails.astro

常见问题

  1. 注册管理员账号时提示:403 Forbidden
  • 原因:环境变量 SECURE_DOMAINSSITE_URL 配置不正确
  • 解决方案:确保两个变量都正确填写,注意多个域名用英文逗号分隔
  1. 生产环境(npm run build 后)无法提交评论
  • 原因:同上,生产环境下的域名校验更严格
  • 解决方案:检查 Waline 服务端的环境变量配置,确保博客域名和 Waline 域名都已加入白名单
  1. 暗色模式不生效
  • 原因:Astro Paper 默认使用 html[data-theme="dark"],直接使用 dark: "auto" 不生效
  • 解决方案:修改配置为 dark: 'html[data-theme="dark"]'

(完)

如果这篇文章刚好帮到了你,欢迎请我喝杯咖啡