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

运行数小时后R Shiny无法启动png()设备的问题求助

解决R Shiny应用Windows下png()设备启动失败问题

问题背景

在Windows 10上运行多个R Shiny应用(部分已稳定运行超1年)服务本地内网,近几周加载图表时出现unable to start png() device错误,重启应用可临时恢复,但数小时后问题复现。未修改R相关配置,更新所有组件也无改善。报错时控制台输出如下:

unable to open file 'C:\Users\jgerla03\AppData\Local\Temp\Rtmp4QtNQ2\file91819b61552' for writing
Warning in dev_fun(file = tempfile(), width = width %||% 640, height = height %||%  :
  opening device failed
Warning: Error in dev_fun: unable to start png() device
  107: dev_fun
  106: gg2list
  105: ggplotly.ggplot
  102: plotly_build.gg
   98: getFromNamespace("prepareWidget", "plotly")
   97: shinyRenderWidget
   96: func
   83: renderFunc
   82: output$fmc_summary_plot
    1: shiny::runApp
Warning in normalizePath(path.expand(path), winslash, mustWork) :
  path[1]="C:\Users\jgerla03\AppData\Local\Temp\Rtmp4QtNQ2": The system cannot find the file specified

应用以管理员权限运行(通过Windows 10任务计划程序或命令行),错误指向的AppData临时文件夹已赋予所有用户读写等全部权限,但“只读”勾选框始终无法彻底取消(取消并应用后仍会重新选中)。

解决方案

1. 自定义Shiny临时目录

避开系统默认临时文件夹的自动清理或权限冲突,手动指定固定目录:

  • 在Shiny应用的app.R或server.R开头添加代码,提前创建好指定目录并赋予管理员完全控制权限:
# 设置自定义临时目录,替换为你实际的路径
Sys.setenv(TMP = "D:/Shiny_Temp")
Sys.setenv(TMPDIR = "D:/Shiny_Temp")
  • 若目录“只读”属性无法取消,打开管理员命令提示符执行:
attrib -R "D:/Shiny_Temp" /S /D

2. 禁用临时文件夹自动清理

Windows磁盘清理或第三方工具可能误删R的临时会话文件夹:

  • 打开「系统属性」→「高级」→「环境变量」,确认TEMP和TMP指向的路径不在自动清理列表中
  • 关闭第三方磁盘清理工具对AppData\Local\Temp的自动清理规则

3. 调整plotly渲染逻辑

错误由ggplotly触发,可尝试绕过png设备依赖:

  • 若无需ggplot转换,直接用plotly::plot_ly()构建图表
  • 必须使用ggplotly时,添加参数禁用静态png fallback:
ggplotly(your_ggplot_obj, staticPlot = FALSE)

4. 定时回收R进程资源

长时间运行可能出现内存泄漏,导致无法创建设备:

  • 在server函数中添加定时内存回收逻辑:
shiny::observe({
  shiny::invalidateLater(3600000) # 每小时执行一次
  gc(verbose = FALSE)
})
  • 用任务管理器监控R进程的内存和句柄数,若持续增长,排查未释放的对象或数据库连接

5. 强制重置系统临时文件夹权限

Windows文件夹的“只读”标记默认仅影响文件,但仍可强制重置权限:

  • 以管理员身份打开命令提示符,执行:
attrib -R "C:\Users\jgerla03\AppData\Local\Temp" /S /D
  • 右键临时文件夹→「属性」→「安全」→「编辑」,给当前用户账户添加「完全控制」权限并应用到所有子对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:43:25