R 如何为golem框架模块化目录选择器?

R 如何为golem框架模块化目录选择器?,r,session,shiny,volumes,golem,R,Session,Shiny,Volumes,Golem,我一直在开发一个闪亮的应用程序,我想将其集成到golem框架中。我使用了来自的目录选择器,但我在尝试将其模块化时遇到了一些问题。闪亮的应用程序不再显示我的目录。不得不说我是闪亮应用开发的初学者。如有任何建议,我们将不胜感激: #' datadir UI Function #' #' @description A shiny Module. #' #' @param id,input,output,session Internal parameters for {shiny}. #' #' @no

我一直在开发一个闪亮的应用程序,我想将其集成到golem框架中。我使用了来自的目录选择器,但我在尝试将其模块化时遇到了一些问题。闪亮的应用程序不再显示我的目录。不得不说我是闪亮应用开发的初学者。如有任何建议,我们将不胜感激:

#' datadir UI Function
#'
#' @description A shiny Module.
#'
#' @param id,input,output,session Internal parameters for {shiny}.
#'
#' @noRd
#'
#' @importFrom shiny NS tagList
mod_datadir_ui <- function(id){
   ns <- NS(id)
   tagList(
     shinyDirButton("datadir", "Raw data directory",
                    "Please select the folder containing the raw accelerometer data")
   )
}

#' datadir Server Function
#'
#' @noRd
mod_datadir_server <- function(input, output, session){
   ns <- session$ns
   volumes <- c(Home = fs::path_home(), "R Installation" = R.home(),
                getVolumes()())

   # DATADIR
   shinyDirChoose(input, "datadir", roots = volumes, session = session,
                  restrictions = system.file(package = "base"))
}

## To be copied in the UI
# mod_datadir_ui("datadir_ui_1")

## To be copied in the server
# callModule(mod_datadir_server, "datadir_ui_1")
正在为id添加ns

#'
#' @description A shiny Module.
#'
#' @param id,input,output,session Internal parameters for {shiny}.
#'
#' @noRd
#'
#' @importFrom shiny NS tagList
mod_datadir_ui <- function(id){
  ns <- NS(id)
  tagList(
    shinyDirButton(ns("datadir"), "Raw data directory",
                   "Please select the folder containing the raw accelerometer data")
  )
}

#' datadir Server Function
#'
#' @noRd
mod_datadir_server <- function(input, output, session){
  ns <- session$ns
  volumes <- c(Home = fs::path_home(), "R Installation" = R.home(),
               getVolumes()())

  # DATADIR
  shinyDirChoose(input, "datadir", roots = volumes, session = session,
                 restrictions = system.file(package = "base"))
}

## To be copied in the UI
# mod_datadir_ui("datadir_ui_1")

## To be copied in the server


library(shiny)
library(shinyFiles)

ui <- fluidPage(
  mod_datadir_ui('jean')
)

server <- function(input, output, session) {
  callModule(mod_datadir_server, "jean")
}

shinyApp(ui, server)
看起来它现在起作用了