canvas的卡片输入文字后报错,请教下大家有没有遇到一样情况的,以及怎么解决?感恩!

使用的obsidian版本是v1.7.4

遇到的问题

canvas的卡片输入文字后报错
109411789a414a6507e0b8d680373cf

预期的效果

怎么样可以恢复正常

已尝试的解决方案

看到早期有同样的帖子,里面有回复开启安全模式可以恢复,我试了下确实可以,但是一旦关闭安全模式,问题又出现了。毕竟要经常运行第三方插件,一直关闭安全模式也不是个事儿。

点击 Show in Console 会看到提及俩关键词 Dataview / ReactComponents

如果必须怀疑一个, 那大概率是 ReactComponents 因为这插件好久没更新了 elias-sundqvist/obsidian-react-components (两年前)

那么先试着禁用掉该插件, 重启 Ob, 会发现 canvas 好了


如果仍然需要使用 ReactComponents, 可以考虑看看 MeepTech/obsidian-react-components-canvas-fix 这看名字就是专门给 ReactComponents 打补丁的, 但它没提供 main.js 无法直接下载了用

所以检查它到底补丁了啥代码, 见 src/header.tsx diff 发现其实就改了一点代码:

那么把这个抄到本地的 main.js 里面, 就行了

具体说, 就是本地 .obsidian/plugins/obsidian-react-components/main.js 这个文件, 第 145601 行

// 第 145601 行
    registerHeaderProcessor() {
        this.registerMarkdownPostProcessor((_, ctx) => __awaiter(this, void 0, void 0, function* () {
            var _a, _b;
+           if (!ctx.sourcePath) { return }  // <-- 仿照 react-components-canvas-fix, 补上这一行的逻辑
            if (!((_a = ctx.containerEl) === null || _a === void 0 ? void 0 : _a.hasClass('markdown-preview-section'))) {
                return;
            }

完后重启 Ob 应该就好了


PS. 也见 React Components break Canvas ‘text’ cards · Issue #49 · elias-sundqvist/obsidian-react-components 这个办法估计也行

1 个赞