【问题标题】:blogdown::serve_site() throws 'html_dependency not found' error | htmlwidgets threejsblogdown::serve_site() 抛出 'html_dependency not found' 错误 | htmlwidgetsthreejs
【发布时间】:2017-11-14 07:59:53
【问题描述】:

在尝试重新构建旧的 .Rmd 文件时,使用(仅)更新的标头信息(即博客类别),我收到此错误:

错误:找不到 html_dependency 的路径:C:/Users/Username/Documents/R/win-library/3.4/threejs/htmlwidgets/lib/threejs-83

同样的 .Rmd 文件,在现在更新 header-info 之前,几个月前成功生成了 html-content,没有任何问题。我认为,更新后的 blogdown 包无法找到依赖库,即 three.js v83 vs three.js v85

如果这是问题所在,如果有人能建议我需要更新哪个文件来解决此问题,我将不胜感激。下面的快照显示了错误消息,以及所需库的 Windows 文件位置。

【问题讨论】:

  • 请展示完整的例子。如果可以minimize it,那就更好了!
  • 好的,我认为这是由于 Rmd 块选项 cache = TRUE 生成的缓存所致。在您发表评论后,我尝试在另一个项目中重现该问题(使用最少的代码,包括 library(threejs) )并看到它工作正常。然后我删除了导致问题的文件的缓存文件,然后 html 依赖错误 没有出现。谢谢。
  • 这是我的怀疑,但你没有提供完整的例子,我无法从你的截图中看到实际的代码块。
  • 是的,感谢您的帮助;您关于复制示例的博客内容丰富。很抱歉我在引用源代码时不够全面。
  • 无需道歉。正如我所说,我可以理解您不知道哪些信息是相关的或提供的。

标签: r three.js r-markdown htmlwidgets blogdown


【解决方案1】:

原来您缓存了生成 HTML 小部件的代码块。缓存 HTML 小部件时,需要注意 HTML 依赖项的版本。如果你缓存了一个widget,基本上下次不会再创建它,而是直接从缓存数据库中加载。以后不会知道外界有什么变化,比如某个JS库的更新。当它从缓存中加载时,它仍然会使用上次存储的所有路径。在您的情况下,threejs-83 已更改为 threejs-85,但您的缓存小部件不知道它,并且仍在寻找 threejs-83(因此出现错误)。

一般来说,我不建议你缓存 HTML 小部件,因为 blogdown 中的 the other caching mechanism 应该可以足够快地在本地构建网站,而且缓存 HTML 小部件可以很棘手。

【讨论】:

    猜你喜欢
    • 2021-02-09
    • 2022-06-16
    • 1970-01-01
    • 2018-12-29
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2015-06-18
    相关资源
    最近更新 更多