You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shiny整合pdf viewer(UiOutput)与selectableTableOutput临时内存错误问题

问题根因

错误是获取临时资源路径的代码逻辑和shinyjqui包的资源注册机制冲突导致的:

  • resourcePaths() 函数返回的是当前R会话中所有已注册的Shiny资源路径的命名向量,不是你单独注册的pdf对应的路径。
  • 单独运行PDF预览功能时,全局只有你用addResourcePath("pdf", tempdir())注册的1个资源路径,paste0(resourcePaths(), "/doc.pdf")刚好能得到正确的临时文件路径,所以功能正常。
  • 加载shinyjqui包后,它会自动注册自身依赖的静态资源路径,此时resourcePaths()返回的是长度≥2的向量,paste0拼接后得到的是多段错误路径字符串,传入writeBin时因为路径不合法触发invalid 'description' argument报错。
异常残留现象的原因

Shiny的资源路径注册是R会话级别的全局操作,只要你运行过一次加载shinyjqui的代码,它注册的资源路径就会一直保存在当前R会话中,哪怕你后续删掉shinyjqui相关代码、重启Shiny应用,只要没关闭R会话(也就是你说的没关闭重开项目),resourcePaths()的返回值还是多段的,所以PDF预览依然报错。

修复方案

把拼接路径的代码改成直接取pdf对应的资源路径即可:
把

temp <- paste0(resourcePaths(), "/doc.pdf")

替换为

temp <- file.path(resourcePaths()["pdf"], "doc.pdf")

也可以直接用你注册时绑定的tempdir()拼接,逻辑更简单:

temp <- file.path(tempdir(), "doc.pdf")

内容的提问来源于stack exchange,提问作者Chris Oosthuizen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:45:01