737 字
4 分钟
Hello_Blog
2026-02-01
无标签

Memos v0.24.4 的官方评论功能确实存在问题,且 Twikoo 接入代码在最新版本可能失效。以下是关键信息和解决方案:

问题根源#

从搜索结果 可以看到,社区提供的 Twikoo 接入代码都是针对 v0.16.1 到 v0.22.x 版本的,依赖的 DOM 选择器如 .gap-2 在 v0.24.x 可能已经改变。

v0.24.4 界面结构变化

  • 新版本使用了新的 React 组件结构
  • 旧的 document.querySelector('.gap-2') 可能已失效
  • 单条 Memo 页面的 URL 结构可能也有变化

为什么你的 Twikoo 代码没用#

旧代码依赖的 DOM 元素:

// 旧代码(v0.16-0.22)
var memoTw = document.querySelector('.gap-2') || ''; // v0.24 可能已不存在这个 class
memoTw.insertAdjacentHTML('afterend', '<div id="mtcomment"></div>');

v0.24.4 新的界面结构(推测):

  • 可能需要选择 [data-testid="memo-content"] 或其他新的 data 属性
  • 或者使用更通用的选择器如 .memo-wrapper > div:last-child

临时解决方案#

方案 1:调试新版 DOM 结构#

在浏览器控制台执行,找到正确的插入点:

// 打开任意单条 Memo 页面(如 /m/123),在控制台执行:
console.log(document.querySelector('.gap-2')); // 旧的选择器,应该为 null
console.log(document.querySelector('[class*="gap-"]')); // 模糊搜索
console.log(document.querySelector('.memo-wrapper').innerHTML); // 查看结构

方案 2:使用更通用的注入代码(适配 v0.24)#

// Memos v0.24.4 适配版 Twikoo
var twikooENV = 'https://你的-twikoo地址.vercel.app';
function injectTwikoo() {
// 等待页面加载完成
if (!document.querySelector('script[src*="twikoo"]')) {
var script = document.createElement('script');
script.src = 'https://cdn.jsdelivr.net/npm/twikoo@1.6.32/dist/twikoo.all.min.js';
script.onload = initTwikoo;
document.head.appendChild(script);
} else {
initTwikoo();
}
}
function initTwikoo() {
// 多种选择器尝试,适配不同版本
var container =
document.querySelector('.gap-2') || // 旧版本
document.querySelector('.memo-content') || // 可能的新类名
document.querySelector('[data-testid="memo-wrapper"] > div:last-child') || // data-testid
document.querySelector('.memo-wrapper > div:last-child'); // 通用兜底
if (!container) {
console.log('Twikoo: 未找到插入点,1秒后重试');
setTimeout(initTwikoo, 1000);
return;
}
// 避免重复插入
if (container.nextElementSibling?.classList.contains('twikoo-container')) return;
var twikooDiv = document.createElement('div');
twikooDiv.className = 'twikoo-container';
twikooDiv.style.marginTop = '20px';
container.parentNode.insertBefore(twikooDiv, container.nextSibling);
twikoo.init({
envId: twikooENV,
el: twikooDiv,
path: window.location.pathname, // 使用当前路径作为唯一ID
});
}
// 只在单条 Memo 页面执行(URL 包含 /m/)
if (window.location.pathname.match(/\/m\/\d+/)) {
injectTwikoo();
}

方案 3:放弃 Memos 内置,改用独立评论页(最稳定)#

如果注入代码始终不稳定,可以:

  1. 在 Memo 内容底部手动添加评论链接

    ---
    评论请访问:https://你的博客.com/comments/?id=这条memo的id
    ---
  2. 自建一个评论聚合页,用 Twikoo 的 API 读取所有评论按 Memo ID 分组显示

长期建议#

Memos v0.24+ 的评论区现状

  • 官方只有表情反应(😊 按钮),没有文字评论
  • 社区 Twikoo 方案因界面重构失效
  • GitHub Issues 上有用户请求 添加评论功能,但官方未实现

如果你急需评论功能,建议:

  1. 降级到 v0.18.1(功能最全面的版本,支持评论)[^^38^]
  2. 或换用其他工具:Halo、WordPress、或者 Astro + Twikoo(静态博客+动态评论)

一句话总结#

v0.24.4 的界面结构变了,旧 Twikoo 代码的选择器失效。你需要用浏览器调试工具找到新的 DOM 插入点,或者降级到 v0.18.1 使用原生评论功能。

Hello_Blog
https://fuwari.vercel.app/posts/hello_blog/
作者
Andy
发布于
2026-02-01
许可协议
CC BY-NC-SA 4.0