发布Shiny应用时遭遇Unhandled Exception错误求助
问题根源与解决方案
你遇到的错误和警告核心原因很明确:shiny 1.0.5.9000是Shiny的开发预览版本,这个版本并没有正式发布到CRAN上。rsconnect默认会从CRAN拉取包依赖,但CRAN上根本没有这个带.9000后缀的开发版,所以才会出现"无法满足包依赖"的错误,同时警告也提示它尝试用CRAN最新稳定版替代,但版本不匹配导致部署失败。
下面是两种可行的解决办法,你可以根据需求选择:
办法一:切换到CRAN稳定版Shiny(推荐,适合大多数场景)
如果不是必须使用开发版的功能,切换到稳定版是最省心的方案:
- 先卸载本地的开发版Shiny:
remove.packages("shiny") - 安装CRAN上的稳定版:
install.packages("shiny") - 再次运行部署命令:
library(rsconnect) deployApp(appDir = "yourwd") # 直接指定目录,不用setwd更稳妥
办法二:强制部署时使用GitHub开发版Shiny
如果你确实需要这个开发版的特定功能,需要告诉rsconnect从GitHub拉取对应版本:
- 在你的Shiny应用目录下创建一个
DESCRIPTION文件,添加以下内容(如果已经有DESCRIPTION,就补充对应的字段):Imports: shiny (>= 1.0.5.9000) Remotes: rstudio/shiny - 然后运行部署命令:
library(rsconnect) deployApp(appDir = "yourwd")
或者你也可以直接用configureApp指定依赖来源:
rsconnect::configureApp( appDir = "yourwd", appDependencies = list( shiny = list(source = "github", repo = "rstudio/shiny") ) ) deployApp(appDir = "yourwd")
额外提示
部署Shiny应用时,尽量保证本地使用的包版本和服务器端能获取到的版本一致,这样可以避免很多依赖相关的问题。另外,setwd()不是必须的,直接在deployApp()里用appDir参数指定应用目录会更清晰,也不容易出错。
内容的提问来源于stack exchange,提问作者Henk Straten
相关产品推荐
相关产品推荐

