【已解决】Ob 内置渲染器渲染问题

如下,只要在 MarkdownRender 前面使用了 await,MarkdownRenderer 就会渲染失败,有什么解决方案嘛,主要是想用来修复 xpgo 的 Folder Note 插件的图片无法正确获取附件所在文件夹的问题。

await this.wait();
MarkdownRenderer.renderMarkdown(message, MyDiv, sourcePath, null);

多点上下文?想 fork 来看看也没找到原项目哪里有用到 renderMarkdown

截图看看报错信息也行

几个点可以注意下,

  • renderMarkdown 被标记弃用了,可以换用 MarkdownRenderer.render 试下,就是参数列表里多带一个全局 app 对象
  • 试下把这个调用包在 await 函数的 then 里面
await this.wait().then(
    () => MarkdownRenderer.renderMarkdown(message, MyDiv, sourcePath, null)
);

原项目没有使用 MarkdownRenderer,所以它的图片处理很麻烦,获取不了图片所在的文件夹名称,但是如果用 Ob 内置的渲染器,就可以直接传入图片名称,或者其他 Ob 支持的路径就行,我试试看能否用这个方法

一般是传相对路径就行,因为相对路径的解析需要依赖 sourcePath 参数,在 renderMarkdown/render 的函数调用里已经包括了,不需要另外获取。

参考 getFirstLinkpathDest()

1 个赞

非常感谢,用 getFirstLinkPathDest() 已经能够正确获取图片路径了,再处理一下正则就能正确渲染了。用内置渲染器的办法不行,里面涉及了太多的 await

1 个赞