RStudio服务器上的R Shiny开发,当应用程序启动时Shiny崩溃

3

我对Shiny不熟悉,但对R有经验。因为工作需要,我现在正在RStudio服务器上进行R开发。它运行在Google Compute Engine上,如果这有区别的话。RStudio服务器可以正常运行,但是Shiny出现了问题。

安装完shiny后,我运行了示例命令:

runExample("01_hello")

最初,这会打开Hello Shiny!应用程序,但所有内容都是灰色的。我重新启动了RStudio,清理了工作区并再次运行了该命令。现在窗口弹出,但立即消失。我尝试重新启动RStudio服务器,并在不同的浏览器中运行,但行为仍然存在。

我尝试快速点击“在浏览器中打开”按钮,但这只会在浏览器中打开一个与重启前相同的灰色选项卡。

有什么建议吗?谢谢。

编辑:

当我启动示例时,RStudio控制台显示:

Listening on http://127.0.0.1:4096

直到我按下esc键之前,它都只是静止的。

IE控制台没有任何错误(虽然我也不确定我是否使用正确--不是一个网页专家,抱歉)。

Chrome控制台会给出一个错误:

'webkitRequestAnimationFrame'是特定于供应商的。请改用标准的'requestAnimationFrame'。

其中包含一个指向VM320:6635的链接,该链接中写道:

function _b(b,c){var d=b;var e=Gni(function(){var a=wj();d.Df(a)});return $wnd.webkitRequestAnimationFrame(e,c)}


你的浏览器的 JavaScript 控制台中是否有任何有意义的输出? - Kevin Ushey
好主意 @KevinUshey。编辑了原始问题。谢谢! - Michael Sherman
3个回答

2
我在安装RStudio Server和Shiny Server之后,在我的VPS上遇到了相同的问题,然后尝试配置Apache代理,以便我可以使用www.example.com/rstudio来访问IDE,而不是默认的www.example.com:8787。
起初我做错了,和你一样也遇到了同样的问题,但是在这里我找到了正确的解决方案:https://support.rstudio.com/hc/en-us/articles/200552326-Running-with-a-Proxy 直接原因是websocket代理配置丢失。
ProxyPassMatch ^/rstudio/p/([0-9]+)/(websocket|.*/websocket)/$ ws://localhost:8787/p/$1/$2/

1

为了测试问题是在RStudio服务器还是其他地方,请在R中运行此单文件应用程序(将其复制粘贴到R终端):

library(shiny)
server <- function(input, output) {
  output$distPlot <- renderPlot({
    hist(rnorm(input$obs), col = 'darkgray', border = 'white')
  })
}

ui <- shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
      sliderInput("obs", "Number of observations:", min = 10, max = 500, value = 100)
    ),
    mainPanel(plotOutput("distPlot"))
  )
))

shinyApp(ui = ui, server = server)

我发现了谷歌群组讨论 Rstudio服务器问题,所以可能是某种兼容性问题。


谢谢@Mikael。我运行了代码,但是出现以下错误:Listening on http://127.0.0.1:5584 /usr/bin/xdg-open: 1: eval: www-browser: not found /usr/bin/xdg-open: 1: eval: links2: not found /usr/bin/xdg-open: 1: eval: elinks: not found /usr/bin/xdg-open: 1: eval: links: not found /usr/bin/xdg-open: 1: eval: lynx: not found /usr/bin/xdg-open: 1: eval: w3m: not found xdg-open: no method available for opening 'http://127.0.0.1:5584'我访问了端口为5584的IP地址,但是网页无法打开。我需要先做些什么吗?感谢您提供的链接。我正在从中编写问题解决程序。 - Michael Sherman
这是一篇有趣的帖子。我遇到了相似的问题;应用程序启动了,但它并没有完全运行。ui.R已按定义创建,但与server.R没有连接,也就是说,该应用程序只能作为界面使用,没有其他功能。 - Konrad

1
我已经基本解决了我的问题。尽管窗口在启动Shiny应用程序时仍然会关闭,但现在我可以导航到Shiny应用程序。这对我来说已足够,可以认为问题已经解决。
我需要做两件事。首先,我必须使用GCE的命令行打开Shiny正在监听的端口,这是第二个答案,使用以下命令行:如何在Google Compute Engine中打开特定端口(例如9090) 然后,我必须使用以下命令启动Shiny应用程序:
runExample("01_hello", host="0.0.0.0", port=9999)

这也适用于runApp命令。9999是您在GCE上打开的端口号,而host=0.0.0.0似乎告诉Shiny监听外部连接(来自in-R ?runApp帮助文档)。您需要确切地输入0.0.0.0,而不是您机器的IP或其他任何内容。
即使窗口关闭时我启动示例,我仍然可以导航到实例的外部IP和端口号并使用Shiny应用程序。
感谢您们的协助。如果您认为还有更多需要说的,请随意发表评论。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接