【发布时间】:2017-01-13 14:52:55
【问题描述】:
我正在尝试运行一个闪亮的反应式 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" 函数的下载按钮根本没有出现,shiny 似乎只执行 ui.R 代码。我将工作区设置为源文件的文件夹,但没有帮助。即使我从服务器取消注释 stop() 函数,似乎也没有任何改变。在 RStudio 中设置断点不会停止服务器内的代码,所以这就是我认为闪亮没有调用服务器函数的原因。但是,代码之前可以工作,我没有修改单个文件。我什至将源文件的内容复制到 server.R 代码中,但它们仍然没有加载。我有什么明显的遗漏吗?提前谢谢!
【问题讨论】: