闪亮的server.R无法读取全局变量

问题描述 投票:0回答:1

./app 中的两个文件

ui.R

library(shiny)

a <- 1
ui <- fluidPage(
  textOutput("test")
)

服务器.R

server <- function(input, output) {
  output$test <- renderText({
    a
  })
}

运行闪亮的应用程序

shiny::runApp("app")

错误

Warning: Error in cat: argument 1 (type 'closure') cannot be handled by 'cat'
  102: cat
   98: transform
   97: func
   95: f
   94: Reduce
   85: do
   84: hybrid_chain
   83: renderFunc
   82: output$test
    1: shiny::runApp

如果我将代码存入文件,它就可以工作。这是什么原因呢?

library(shiny)

a <- 1
ui <- fluidPage(
  textOutput("test")
)

server <- function(input, output) {
  output$test <- renderText({
    a
  })
}


shinyApp(ui = ui, server = server)
r shiny
1个回答
0
投票

问题是你没有全局文件来一起调用服务器和ui,你需要在全局中合并ui和服务器,为什么你的第一个应用程序不运行是因为

shiny::runApp()
是运行预先构建的应用程序,但我看到你的文件你没有任何shinyapp,而如果你想创建应用程序,你需要完成所有步骤并添加shinyApp()函数。因此第二个代码正在工作。

检查以下解决方案

ui.R 文件

a <- 1
ui <- fluidPage(
  textOutput("test")
)

服务器.R

server <- function(input, output) {
  output$test <- renderText({
    a
  })
}

全球.R

library(shiny)

shinyApp(ui = source("app/ui.R")$value, server = source("app/server.R")$value)

© www.soinside.com 2019 - 2024. All rights reserved.