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

从RStudio部署交互式地图应用到ShinyApps.io时遇错误

问题:Shiny应用部署到ShinyApps.io时报错setCurrentTheme未找到

本地运行正常的地理空间Shiny应用,部署到ShinyApps.io后启动失败,日志提示:

Warning: Error in setCurrentTheme: could not find function "setCurrentTheme"

用户已完成排查:代码中无setCurrentTheme显式调用,精简了依赖包,拆分组件到单独目录,重新部署后问题依旧。应用核心依赖为shiny、ggplot2、dplyr、sf。


排查与解决方案

1. 补全隐性依赖包

setCurrentTheme是bslib包的专属函数,大概率是依赖包的隐性调用导致:

  • 本地环境可能自动加载了bslib,但ShinyApps.io部署时未自动安装该包,需在代码开头显式添加library(bslib)声明依赖。
  • 或在部署时通过rsconnect::deployApp(dependencies = TRUE)强制让平台自动检测并安装所有隐性依赖。

2. 清理部署缓存

ShinyApps.io可能缓存了旧的依赖配置,导致新部署未更新环境:

  • 部署时添加清理参数,强制重建环境:
    rsconnect::deployApp(clean = TRUE)
    

3. 排除本地环境干扰

本地全局环境可能存在未在代码中声明的函数或变量,导致部署后缺失:

  • 启动全新R会话,仅运行应用代码(不加载本地其他对象),验证是否能正常启动,排除本地环境的隐性依赖。
  • 确保应用所需的HLE_data、rename_map等数据,都通过read.csv()、readRDS()等方式在代码中显式加载,而非依赖本地全局环境。

4. 锁定依赖版本

本地与ShinyApps.io的包版本差异可能引发隐性调用错误:

  • 用sessionInfo()导出本地依赖包版本,在代码中添加版本校验,比如:
    stopifnot(packageVersion("shiny") >= "1.7.0", packageVersion("bslib") >= "0.4.0")
    
  • 或通过renv工具生成依赖锁文件,确保部署环境与本地完全一致。

5. 替换主题函数测试

ggplot2::theme_minimal()在部分版本中可能间接调用bslib的主题功能:

  • 临时替换为theme_bw()等基础主题,重新部署测试,若错误消失,则说明是主题函数引发的隐性依赖问题,需显式声明bslib依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:53:24