我正试图让一个闪亮的反应式UI运行。它变得非常复杂(就代码行而言)所以我认为重构是一个好主意。简而言之,这是我的服务器代码:
require(ggplot2)
require(h2o)
shinyServer(function(input, output, session) {
#stop()
localH2o <<- h2o.init(nthreads = 3) #Global variable
source("BuilderServer.R", local = TRUE)[1]
source("ReviewerServer.R", local = TRUE)[1]
# CleanupFUnctions
session$onSessionEnded(function() {
rm(list=ls())
})
})
我假设source
与local = TRUE
就像复制粘贴R文件的内容一样。因此它们包含output$functionName <- renderUI({code})
形式的函数。 ui代码依赖于这些函数,大多数都是反应性的,ui代码如下所示:
shinyUI(navbarPage("Metamodel",
tabPanel("Build Custom Model",
fluidRow(
column(12,align="center",
uiOutput("BuilderUpTitle")
)
),
fluidRow(
column(3,
uiOutput("BuilderAxisSelector")
)
)
)
))
在这种特殊情况下,"BuilderUpTitle"
函数如下所示:
output$BuilderUpTitle <- renderUI({
inFile <- input$BuilderInputFile
if(is.null(input$BuilderInputFile)){
fileInput("BuilderInputFile", "Upload a xlsx file")
} else {
#R Stuff done here with the file
textInput("text", label = h3("Model Title"), value = "Enter text...")
}
})
我昨天编写了代码并且它正在运行。今天我再次打开电脑,在启动应用程序时,甚至没有来自server.R的依赖项似乎加载(ggplot2和h2o)。 "BuilderUpTitle"
功能中的下载按钮根本不显示,闪亮似乎只执行ui.R代码。我将工作区设置为源文件的文件夹,但没有帮助。即使我从服务器取消注释stop()
函数,似乎没有任何改变。在RStudio中设置断点不会停止服务器内的代码,所以我认为闪亮不会调用服务器功能。但是,代码以前工作,我没有修改单个文件。我甚至将源文件的内容复制到server.R代码,但仍然没有加载。有什么明显的东西让我失踪吗?提前谢谢!
答案 0 :(得分:0)
好的,再一次,我发现自己的问题是什么,我所说的一切都不会让任何人发现错误。以下是重现问题的最微小的代码:
ui.R
shinyUI(fluidPage(
fluidRow(
uiOutput("itWillLock"),
uiOutput("itWillLock")
)
))
server.R
shinyServer(function(input, output) {
output$itWillLock <- renderUI({
sliderInput("slider","Slider",min=0,max=1,value=0)
})
})
我猜R卡在无限循环中,永远不会到达server.R文件。这是我应该报告的错误吗?或者只是常识会让人们摆脱这种麻烦。谢谢!