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

R Shiny报错:`server` must be a function,求问题排查思路

Shiny应用报错:'server' must be a function 解决思路

问题原因

调用randomApp()时触发的Error: 'server' must be a function错误,本质是**runApp()的参数传递不符合要求**。

runApp()并不接受直接传入ui和server两个独立参数,它的合法参数形式是:

  • 传入一个由shinyApp(ui, server)生成的Shiny应用对象
  • 传入包含ui和server元素的列表

你的代码中直接将ui和server作为两个参数传入,导致R无法正确识别server参数的类型,从而抛出错误。

修正方案

将runApp(ui, server)替换为以下任意一种写法即可:

方式1:使用shinyApp()创建应用对象

runApp(shinyApp(ui, server))

方式2:传入包含ui和server的列表

runApp(list(ui = ui, server = server))

完整修正代码

library(shiny)
randomUI <- function(id) {
    tagList(
        textOutput(NS(id, "val")),
        actionButton(NS(id, "go"), "Go!")
    )
}
randomServer <- function(id) {
    moduleServer(id, function(input, output, session) {
        rand <- eventReactive(input$go, sample(100, 1))
        output$val <- renderText(rand())
    })
}
randomApp <- function(){
    ui <- fluidPage(
        randomUI("random1"),
        randomUI("random2"),
        randomUI("random3")
    )
    
    server <- function(input, output, session) {
        randomServer("random1")
        randomServer("random2")
        randomServer("random3")
    }
    
    # 修正后的调用
    runApp(shinyApp(ui, server))
}
randomApp()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:50:23