4

我正在尝试使用secret包为我的 Shiny 应用程序(API 密钥、数据库凭据)存储应用程序机密。我已经正确设置了保管库并可以从控制台访问,并添加了一个测试密码(名称“test”,里面有一些 foobar 文本)。

我有一个包含两个文件的 Shiny 设置 ( ui.r/ server.r),并试图在 UI 中打印测试值以证明它在构建更复杂的东西之前有效。

ui.r:

library(shiny)
library(leaflet)
library(secret)

# Leaflet example UI.

ui <- fluidPage(
  leafletOutput("mymap"),
  p(get_secret("test")),
  actionButton("recalc", "New points")
)

服务器.R:

library(shiny)
library(leaflet)

server <- function(input, output, session) {

points <- eventReactive(input$recalc, {
 cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)
 }, ignoreNULL = FALSE)

output$mymap <- renderLeaflet({
  leaflet() %>%
  addProviderTiles(providers$Stamen.TonerLite,
                   options = providerTileOptions(noWrap = TRUE)
  ) %>%
  addMarkers(data = points())
 })
}

奇怪的是,使用 ui.R 或 server.R - 顶部的“运行应用程序”命令运行时出现错误Error : secret ‘test’ does not exist,或者使用 cmd+shift+enter。据我了解,这运行runApp('app').

但是,如果我明确调用shinyApp(ui = ui, server = server),就好像这是一个单文件应用程序一样,它会正常运行,包含所有内容:请参阅地图下方的 foobar 文本。

如果我删除get_secret()UI.r 中的调用,则该runApp()方法有效(显然,这不是秘密)。

我真的更喜欢使用双文件结构来帮助管理复杂性,但不知道如何在 RStudio 中运行它并让我的秘密保险库可以访问。

谢谢你的帮助!

4

0 回答 0