我正在探索令人兴奋的新Shinymeta软件包,该软件包可从有光泽的应用程序生成可再现的代码。按照示例here,我制作了一个可以在本地计算机上运行的应用程序,但发布到Shinyapps.io时失败了。
下面是一个最小的示例,它再现了该错误,即在本地正常运行,但是在发布到shinyapps.io时失败。
app.R
library(shiny)
library(shinymeta)
library(ggplot2)
library(shinyAce)
ui <- fluidPage(
outputCodeButton(plotOutput("p1"))
)
server <- function(input, output) {
output$p1 <- metaRender(renderPlot, {
hist(diamonds$carat)
})
observeEvent(input$p1_output_code, {
code <- expandChain(output$p1())
displayCodeModal(code)
})
}
shinyApp(ui, server)
在我的本地环境中,此代码可以正常工作。该应用通过上方的“显示代码”按钮显示diamonds$carat
的直方图。单击“显示代码”按钮,将打开一个框,其中包含通过hist(diamonds$carat)
函数传递的生成图形所需的代码行(即expandChain()
)。
当我将应用程序发布到Shinyapps.io时,该应用程序呈现正常。但是,当我单击“显示代码”按钮时,代码不会出现,并且应用程序与服务器断开连接。
我在macOS上运行R 3.6.1。我有一个免费的Shinyapps.io帐户(但是我的其他实践中的闪亮应用程序已发布,没有任何问题)。
谢谢您的任何建议。
答案 0 :(得分:0)
检查shinapps.io上的日志,问题似乎出在clipr
软件包中。这是shinymeta
的依赖项,但是由于某种原因,它似乎没有像其他依赖项那样被自动调用。将以下代码添加到app.R文件中可解决此问题:
library(clipr)