从终端运行ShinyApp时无法显示www/logo.png的问题求助
问题原因与解决方案
这个问题大概率是工作目录不匹配导致的,我来给你拆解下:
为什么RStudio里正常,终端运行就出问题?
RStudio默认会把你的folder/目录(也就是app.R所在的文件夹)当作工作目录,Shiny能自动找到同级的www/文件夹里的资源。但用Rscript app.R从终端运行时,工作目录取决于你当前终端所在的位置:
- 如果你是在
folder/的上级目录执行Rscript folder/app.R,此时终端的工作目录是上级目录,Shiny会在上级目录下找www/,自然找不到folder/www/logo.png; - 哪怕你在
folder/目录下运行,偶尔也会因为终端环境的默认设置,导致工作目录识别偏差。
两种靠谱的解决方案
方案1:手动切换终端工作目录再运行
打开终端,先切换到app.R所在的folder/目录,再执行脚本:
cd /绝对路径/to/folder # 或者相对路径,比如cd ../folder Rscript app.R
方案2:在脚本中固定工作目录(更稳妥)
推荐用here包来自动识别脚本所在的目录,避免依赖终端的工作目录设置:
- 先安装
here包(如果还没装):
install.packages("here")
- 在
app.R的最开头添加以下代码:
library(here) # 将工作目录设置为当前脚本所在的文件夹 setwd(here())
这样不管你从终端的哪个位置运行Rscript app.R,Shiny都能精准找到www/里的logo.png。
你可以先试试方案1快速验证,如果经常需要从不同位置运行脚本,方案2会更省心。
内容的提问来源于stack exchange,提问作者user20319483
相关产品推荐
相关产品推荐

