oeyoews / tiddlywiki-starter-kit

📦 使用 TiddlyWiki5 搭建的本地优先笔记软件
https://tiddlywiki-starter-kit.vercel.app/docs
MIT License
40 stars 16 forks source link

插件库bug #104

Closed oeyoews closed 11 months ago

oeyoews commented 11 months ago

出现bug的原因有两点:

  1. tw的parser的bug
  2. codeblock在构建插件库的时候server端也会用到,我在重写这个widget,像往常一样加了浏览器判断,导致构建的时候,核心的代码没有加到HTML里面,这也就覆盖了第一个bug导致的界面乱掉的bug,导致界面看起来很正常

这两个bug相互影响我调试的过程,刚开始我还以为只有一个bug,谁知是两个,前后总共耗时3小时(一个拖了20天的bug, 本来就知道肯定耗费时间, 回滚太耗费事件了 上次遇到的插件库bug是上面的第一点, 很好修, 看一眼插件库的主页就大概知道问题了, 今天打开中文教程的时候又看到的本地插件库调试这几个字, 上次没看明白,也没需求, 这次仔细看了下怎么用, 刚好用来调试插件库的bug, 就不用git 回滚了, 但还是依靠gh-pages的历史提交记录)

总体来说,bug不太好找, 每一个线索都不好找(还好之前将 tiddlers的文件夹单独放在了一个仓库)

body 本地测试出问题是因为live-server 的bug, 直接打开,或者在线不受影响的

oeyoews commented 11 months ago

极大的可能就是遇到了异常解析

oeyoews commented 11 months ago

目前markdown的解析就有bug

oeyoews commented 11 months ago

或者直接清空,使用一个新的plugin 进行测试

oeyoews commented 11 months ago

https://github.com/oeyoews/tiddlywiki-starter-kit/commit/c2f9ef2a9ebc10fb2f913608bca8f0dcf5e333c4#diff-eef5ba946abe38d95d8be82cedf30dc1367ec74c447b21cc04097043552eaa7b

oeyoews commented 11 months ago
<body>
    <h1>Hello, TiddlyWiki!</h1>
</body>

NOTE: 即使使用html注释掉也不行 , 遇到body的闭合标签就解析失败了

这个body 的闭合标签如果被打包进插件库, 会导致解析问题, 从而导致插件库失效;(上次遇到的也是类似的问题, 不过具体记不住了, 不过上次是直接library/index.html 界面有问题,直接修改就修好了, 这次是界面是正常的, 翻了一遍gh-pages分支的历史纪录, 发现 先是 index.html 的最后一部分的 tw js代码确实, 后来手动加上之后, 界面就出现了解析问题(这次才和第一次遇到的异常一样), 我看到这次是提交了copy-code 插件, 刚开始以为是 codeblock.js 导致的bug, 后来才发现 是parser的bug(上次遇到的parser bug 还是markdown的, 现在还没修好), 也是闭合标签的问题(markdown 不能出现闭合标签, 否则也会解析错误)

copy-code 是为了给每个代码块添加一个复制代码的按钮, 所以自然在readme中写所有highlight 支持的代码块类型, html类型中有个body标签, 就是它导致的问题, 换个标签都不会出现问题

image
oeyoews commented 11 months ago

复现步骤, 在你的任意一个插件readme中写上 <body></body> 标签, 你插件的主页应该就会看到上面图片中的样子

oeyoews commented 11 months ago

修复 https://github.com/oeyoews/tiddlywiki-starter-kit/commit/0c159e95f407dc2c44c13c74813d325c1a813752

oeyoews commented 11 months ago

仍然是确实pluginlibrary 的js核心代码

oeyoews commented 11 months ago

那段代码确实,果然还是是codeblock.js 导致的(shit)

同时遇到两个bug, 一个bug花一个小时(我就知道插件库的bug找起来肯定费时间)

oeyoews commented 11 months ago

tw几乎处处都依赖codeblock.js

oeyoews commented 11 months ago

如果不构建插件库, 这样的bug我永远都不会发现

oeyoews commented 11 months ago

tw依靠手动指定文件类型 (字段 type), 这里依赖codeblock.js 识别文件类型