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

本地正常运行的Shiny App部署至shinyapps.io失败求助

Shiny应用部署至shinyapps.io的两类问题及解决方案

问题1:使用deployApp()部署时启动失败,提示找不到leafletOutput函数

错误信息

浏览器显示:An error has occurred. The application failed to start. exit status 1
日志错误:Error in leafletOutput("map") : could not find function "leafletOutput"

解决方案

  • 强制重新安装依赖:本地加载leaflet包不代表部署环境会同步安装对应版本,部署时添加clean = TRUE参数,强制shinyapps.io重新安装所有依赖:
    rsconnect::deployApp(appDir = "./ShinyApp", appName = "XXX", account = "XXX", clean = TRUE)
    
  • 确认包加载顺序:保证library(leaflet)代码位于ui定义之前,确保函数在调用前已被加载。
  • 清理本地部署缓存:删除本地应用目录下的.rsconnect文件夹后重新部署,避免旧缓存干扰。

问题2:本地运行后点击publish时,出现Quarto检测错误

错误信息

── Preparing for deployment:heavy_check_mark: Deploying "ShinyApp" using server: shinyapps.io / username: XXXX

Error in quartoInspect():! Failed to run quarto inspect against your content:

ERROR: C./license_data.rds is not a valid Quarto inputdocumentBacktrace:▆ 
└─rsconnect::deployApp(...)
└─rsconnect:::appMetadata(...)
└─rsconnect:::inferQuartoInfo(...)
└─rsconnect:::quartoInspect(appDir = appDir, appPrimaryDoc = appPrimaryDoc)
└─cli::cli_abort(...)
└─rlang::abort(...)

Execution halted.

解决方案

  • 隔离数据文件:将.rds数据文件移至单独子目录(如data/),修改代码中的读取路径:
    postal_areas <- readRDS("data/postal_areas.rds")
    postal_areas_long <- as.data.table(readRDS("data/postal_areas_long.rds"))
    
    避免根目录下的数据文件被Quarto误识别为输入文档。
  • 强制指定应用类型:部署时明确指定主文档为Shiny脚本,跳过Quarto检测:
    rsconnect::deployApp(appDir = "./ShinyApp", appName = "XXX", account = "XXX", appPrimaryDoc = "app.R")
    
  • 添加忽略规则:在应用目录创建.rsconnectignore文件,写入*.rds,阻止rsconnect扫描这类非脚本文件。

代码优化建议

  1. 移除setwd("./ShinyApp"):部署时shinyapps.io会自动以应用目录为工作目录,使用相对路径更稳定。
  2. 推荐用here包管理路径,彻底避免路径问题:
    library(here)
    postal_areas <- readRDS(here("postal_areas.rds"))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:35:07