使用模块的闪亮应用程序在本地部署时不会 return shiny.appobj 对象

Shiny app using modules does not return a shiny.appobj object when deployed local

我正在尝试使用模块构建一个闪亮的应用程序,但是,当我尝试 运行 本地应用程序时,我收到错误消息: “在 func(fname, ...) 中出错:app.R 没有 return 一个 shiny.appobj 对象。”

当我省略模块并在一个 app.R 文件中完成所有操作时,它工作正常。

文件夹结构如下:

"Project_Folder"

  1. app.R
  2. “R”文件夹 -> “Form_UI.R”、“Data_Browser_Server.R”
  3. "Testdata.feather"
library(shiny)
library(shinydashboard)
library(tidyverse)
library(DT)


df_Browser_data <- feather::read_feather("Testdata.feather")

Datenbericht_App <- function(){
    ui <- dashboardPage(
        title = "Prototype",
        dashboardHeader(title = "Browser prototype", titleWidth = 350),
        skin = "red",
        dashboardSidebar(
            width = 350,
            disable = FALSE,
            sidebarMenu(
                id = "tabs",
                menuItem(
                    text = "Data Browser",
                    tabName = "Data_Browser"
                ),
                menuItem(
                    text = "Preview",
                    tabName = "Preview_Window"
                )
            )
        ),
        mainPanel(
            tabItems(
                tabItem(tabName = "Data_Browser",
                        fluidPage(
                            Form_UI("Overview"),
                            dataTableOutput("Browser_Table")
                        )
                ),
                tabItem(tabName = "Preview_Window",
                        fluidPage(
                        )
                )
            )
        )
    )
    
    server <- function(input, output, session) {
        output$Browser_Table <- renderDataTable(Data_Browser_Server("Overview"))
    }
    
    shinyApp(ui, server)
}


你return函数Datenbericht_AppshinyApp 函数 return 在 Datenbericht_App 中是一个闪亮的应用程序对象,但未被调用。您可以 运行 Datenbericht_App() 在脚本的最后一行 return 闪亮的应用程序对象。

一个简化的例子:

library(shiny)

myWrapper <- function(){
  ui <- fluidPage(
    h1("This is just a test")
  )
  server <- function(input, output, session) {}
  shinyApp(ui, server)
}

myWrapper()