R Shiny应用无法加载WWW文件夹内图片与CSS,需配置方案
解决Shiny应用资源路径加载问题
你的问题出在Shiny默认的资源查找规则:Shiny会自动从当前运行的app.R所在目录下的www子文件夹读取静态资源(图片、CSS等),而你把www放在了app.R的同级目录(不是子目录),所以Shiny找不到这些文件。
下面给两种解决办法,选一种就行:
方法1:调整文件夹结构(推荐)
把www文件夹放到app.R所在的文件夹里,结构变成这样:
- 项目主文件夹
- app.R
- www/
- logo.png
- 你的CSS文件
调整后不用改代码,原来的tags$img(src="logo.png")就能正常加载图片,CSS文件也可以直接用tags$link(rel="stylesheet", href="style.css")调用。
方法2:手动注册资源路径(不调整结构时用)
如果不想改文件夹结构,就用addResourcePath()函数把同级的www文件夹映射成一个虚拟访问路径,代码示例:
library(shiny) # 把上级目录的www文件夹注册为虚拟路径"assets" addResourcePath("assets", "../www") ui <- fluidPage( tags$img(src="assets/logo.png"), # 加载CSS的示例 tags$link(rel = "stylesheet", type = "text/css", href = "assets/你的样式文件.css") ) server<-function(input,output,session){} shinyApp(ui = ui, server = server)
另外要注意:运行app.R时,确保你的工作目录是app.R所在的文件夹(RStudio打开app.R时默认会设置这个工作目录),否则../www的相对路径会出错。
内容的提问来源于stack exchange,提问作者Johann
相关产品推荐
相关产品推荐

