248 字
1 分钟
修复 Twikoo 评论错误 twikoo is not defined
在之前引入 Twikoo 评论的教程中,由于脚本加载顺序,直接引入 CDN 脚本并立即调用 twikoo.init() 可能因加载顺序导致错误 twikoo is not defined
<script is:inline src="https://cdn.starryfrp.com/libs/twikoo/1.6.44/twikoo.all.min.js"></script><script is:inline define:vars={{ config }}> twikoo.init(config) <!-- ❌ 这里可能会报错 --></script>为了解决这个问题,可以采用 动态加载 + Swup 兼容 的方式。
首先,创建事件通知函数
打开 /src/layouts/Layout.astro 文件,添加以下内容:
function initCommentComponent() { const event = new Event("loadComment"); document.dispatchEvent(event);}接着,在 Swup 生命周期中和页面初始化时调用它
function init() { // ... 其他初始化 initCommentComponent(); // 首次加载}window.swup.hooks.on('content:replace', initCustomScrollbar)window.swup.hooks.on("content:replace", () => { initCustomScrollbar(); initCommentComponent();});最后,修改 Twikoo 评论组件
<div id="tcomment"></div><script is:inline src="https://cdn.starryfrp.com/libs/twikoo/1.6.44/twikoo.all.min.js"></script><script is:inline define:vars={{ config }}> twikoo.init(config)</script><script define:vars={{ config }}> function loadTwikoo() { const script = document.createElement("script"); script.src = "https://cdn.starryfrp.com/libs/twikoo/1.6.44/twikoo.all.min.js"; script.defer = true; script.onload = () => { twikoo.init(config); // 传入配置信息 }; document.body.appendChild(script); } document.addEventListener("loadComment", loadTwikoo, { once: true });</script>酱酱,这样就完成了喵~
之后就不会在出现 twikoo is not defined 错误了喵~
修复 Twikoo 评论错误 twikoo is not defined
https://blog.ioll.cc/posts/2025/fix-twikoo-notdefined/