You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于Golem框架开发Shiny应用时出现‘argument "body" is missing, with no default’错误的技术求助

解决Shiny + Golem应用中argument "body" is missing, with no default错误

我帮你定位到了问题的根源:你在使用shinydashboard::dashboardPage时,没有正确传入必需的body参数——你的dashboardBody被错误地放在了navbarPage的外部,导致dashboardPage初始化时缺少了核心的主体部分,这就是触发报错的直接原因。

错误原因详解

shinydashboard::dashboardPage的语法规则明确要求必须包含三个关键参数:headersidebarbody。你的代码里,dashboardBody被写在了navbarPage的闭合括号之后,这就导致dashboardPage只接收到了headersidebar,完全没拿到body参数,自然会抛出argument "body" is missing的错误。

修复后的代码

下面是调整结构后的app_ui函数,我把dashboardBody移到了dashboardPage内部,确保三个核心参数完整传入:

app_ui <- function(request) {
  tagList(
    golem_add_external_resources(),
    shinyUI(
      navbarPage(
        windowTitle = "Page",
        title = div(img(src = ".png", height = "30px"), "Toolbox"),
        theme = shinythemes::shinytheme("cerulean"),
        tabPanel("Toolbox", icon = icon("wrench"),
                 shinydashboard::dashboardPage(
                   skin = "black",
                   header = shinydashboard::dashboardHeader(title = "Toolbox", titleWidth = 300),
                   sidebar = shinydashboard::dashboardSidebar(
                     width = 300 ,
                     shinydashboard::sidebarMenu(
                       shinydashboard::menuItem(
                         "Tools",
                         tabName = "tools_app",
                         icon = icon("wrench"),
                         shinydashboard::menuSubItem(
                           "Gene Expression/Signature/Pathways",
                           tabName = "gene_app",
                           icon = icon("chart-line")
                         ),
                         shinydashboard::menuSubItem(
                           "Genomic",
                           tabName = "genomic_app",
                           icon = icon("universal-access")
                         ),
                       )
                     )
                   ),
                   # 将dashboardBody作为dashboardPage的第三个参数传入
                   body = shinydashboard::dashboardBody(
                     shinydashboard::tabItems(
                       shinydashboard::tabItem("tools_app", mod_tools_path_ui("tools_path_ui_1")),
                       shinydashboard::tabItem("gene_app",mod_gene_expressions_sign_path_ui("gene_expression_sign_path_ui_1")),
                       shinydashboard::tabItem("genomic_app", mod_genomic_ui("genomic_ui_1"))
                     )
                   )
                 )
        )
      )
    )
  )
}

关键调整说明

  • 把原本在navbarPage外部的dashboardBody,移动到dashboardPage内部,作为命名参数body = ...传入
  • 确保dashboardPage的三个核心参数(headersidebarbody)都完整传递,符合函数的语法要求

调整完成后,你可以重新运行应用测试,这个错误应该就能解决了。

内容的提问来源于stack exchange,提问作者GaB

火山引擎 最新活动