发布Shiny应用到服务器时报路径不在项目目录内错误如何解决?
错误原因
你使用了指向本地家目录的绝对路径读取文件,~在系统中代指当前登录用户的家目录,线上Shiny部署环境的目录结构与本地完全不同,且大部分Shiny发布平台限制应用只能读取项目目录内部的文件,因此触发路径校验报错。
修复步骤
- 首先将两个用到的Excel文件移动到Shiny应用的项目根目录下,你可以在根目录新建
data文件夹专门存放数据文件,最终目录结构参考:
Shiny应用根目录/ ├── app.R(或ui.R、server.R启动文件) └── data/ ├── Pricing 081021.xlsx └── Portfolio for R 081021.xlsx
- 替换原有代码中的绝对路径为相对路径(相对路径以应用启动文件所在目录为基准),修改后的代码如下:
第36行替换为:data <- read_excel("./data/Pricing 081021.xlsx") %>% filter(Date_of_Indication == max(Date_of_Indication))
第38行替换为:portfolio <- read_excel("./data/Portfolio for R 081021.xlsx") - 本地验证:修改完成后,先将本地R的工作目录切换到应用根目录,运行修改后的代码确认可以正常读取数据,再重新发布到线上即可解决路径报错问题。
注意事项
- 路径中的空格、文件名大小写要和实际文件完全一致,避免因拼写问题导致读取失败
- 后续开发Shiny应用要读取资源时,不要使用
~、C:/、/Users/xxx这类固定的绝对路径,所有资源都要放在项目目录内用相对路径引用,避免部署时出现兼容性问题
内容的提问来源于stack exchange,提问作者Abacus
相关产品推荐
相关产品推荐

