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

shinyapps.io无法读取.Renviron中的环境变量问题求助

shinyapps.io无法读取.Renviron中的环境变量问题求助

大家好,我最近碰到个头疼的问题,想请教下各位!

我自己做了一个R包,里面有个run_app()函数,内部会调用runApp()来启动Shiny应用,已经把这个包传到私有GitHub仓库了。包的目录结构大概是这样的:

project_name/
├── project_name.Rproj
├── DESCRIPTION
├── NAMESPACE
├── .Renviron(隐藏文件)
├── 其他Git相关隐藏文件
└── R/
    └── app.R

我的Shiny应用里用到了get_bucket这类需要AWS凭证的方法,本地运行的时候完全没问题,RStudio能自动读取.Renviron里的环境变量,一切都很顺畅。

但部署到shinyapps.io之后就出问题了:比如调用Sys.getenv("AWS_ACCESS_KEY_ID")返回的是空字符串,根本读不到我存在.Renviron里的变量。应用本身能正常部署,但那些依赖AWS凭证的功能全失效了,核心原因就是应用读不到.Renviron里的内容。

说下我的部署流程:我单独建了一个文件夹,里面放了另一个app.R文件,内容很简单:

library(repository_name)
repository_name::run_app()

然后我会执行这段部署代码:

tmp.enc <- options()$encoding
options(encoding = "UTF-8", rsconnect.packrat = TRUE)

rsconnect::deployApp(
  appDir = "path/to/the/folder/containing/the/.R/file",
  appName = "app_adress",
  upload = TRUE,
  logLevel = "verbose",
  lint = TRUE,
  forceUpdate = TRUE
)

我已经试过各种办法了,比如:

  • 确保.Renviron的最后一行是空行(听说这样能避免读取问题)
  • 切换到项目的工作目录再执行部署命令
  • 在应用的server函数开头手动调用readRenviron(".Renviron")
  • 尝试用readRenviron("~/.Renviron")读取用户根目录下的配置
  • 用readRenviron(normalizePath('.Renviron'))来确保路径正确
  • 每次部署前都确认.Renviron确实在当前工作目录里

但这些方法都没用。我绝对不想把.Renviron提交到代码仓库里,太不安全了。我觉得肯定有办法让shinyapps.io在部署时识别我的环境变量,每次部署都手动用Sys.setenv()硬编码凭证也不是长久之计,理想状态是部署过程能自动读取我的.Renviron,但我肯定是哪里操作错了,实在找不到问题所在。

备注:内容来源于stack exchange,提问作者William Lima

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:08:01