Shiny Chrome浏览器不会显示页面,除非已在浏览器中打开

Shiny Chrome浏览器不会显示页面,除非已在浏览器中打开,shiny,shiny-server,Shiny,Shiny Server,当我的桌面(linux)上的chrome浏览器已经打开时,我就可以启动闪亮的应用程序了。然而,当我关闭浏览器,启动闪亮的应用程序时,它只会在下方的状态栏中显示一个空白页面和“等待127.0.0.1…”。换句话说,它启动chrome,但不显示闪亮的应用程序内容。这是我的密码: library(shiny) library(shinyBS) launch.browser = function(appUrl, browser.path='/usr/bin/chromium-browser') {

当我的桌面(linux)上的chrome浏览器已经打开时,我就可以启动闪亮的应用程序了。然而,当我关闭浏览器,启动闪亮的应用程序时,它只会在下方的状态栏中显示一个空白页面和“等待127.0.0.1…”。换句话说,它启动chrome,但不显示闪亮的应用程序内容。这是我的密码:

library(shiny)
library(shinyBS)

launch.browser = function(appUrl, browser.path='/usr/bin/chromium-browser') {
  system(sprintf('"%s" --disable-gpu --app="data:text/html,<html>
<head>
<title>Configuration</title>
</head>
<body>
<script>window.resizeTo(800,500);window.location=\'%s\';</script>
</body></html>"', browser.path, appUrl))
}

shinyApp(

  ui = fluidPage(
    fluidRow(
      br(),
      wellPanel(
        fluidRow(
          h4('User Information')
        ),
        fluidRow(
          column(4,
            textInput('Name', 'Full Name', value = "")
          ),
          column(4,
            numericInput('accNum', 'Account Number', value = "")
          ),
          column(4,
            textInput('token', 'Account Token', value = "")
          )
        )
      )
    ),

    fluidRow(
      column(12,
         actionButton('save', 'Save')
      )
    ),
    bsTooltip(id = "accNum", title = "Enter Lending Club account number", 
              placement = "bottom", trigger = "hover")
    # tags$head(tags$style(type="text/css", "#accNum {width: 100px}"))
  ), 

  server = function(input, output, session) {
    session$onSessionEnded(function() {
      stopApp()
    })
    observe({
      if (input$save == 0)
        return()
      isolate({
        j<<-input$accNum
      })
    })

  },
  options = list(launch.browser=launch.browser)
)
库(闪亮)
图书馆(shinyBS)
launch.browser=函数(appUrl,browser.path='/usr/bin/chromium browser'){
系统(sprintf('%s)--禁用gpu--app=“data:text/html,
配置
window.resizeTo(800500);window.location=\'%s\';
“,browser.path,appUrl))
}
shinyApp(
ui=fluidPage(
fluidRow(
br(),
井面板(
fluidRow(
h4(“用户信息”)
),
fluidRow(
第(4)栏,
textInput('Name','Full Name',value=“”)
),
第(4)栏,
数值输入('accNum','Account Number',value=“”)
),
第(4)栏,
textInput('token','Account token',value=“”)
)
)
)
),
fluidRow(
第(12)栏,
actionButton('保存','保存')
)
),
b工具提示(id=“accNum”,title=“输入借贷俱乐部账号”,
placement=“bottom”,trigger=“hover”)
#标签$head(标签$style(type=“text/css”,“#accNum{width:100px}”))
), 
服务器=功能(输入、输出、会话){
会话$onSessionEnded(函数(){
stopApp()
})
观察({
如果(输入$save==0)
返回()
隔离({

j有光泽的github人回答:

“这是由于您的shell脚本存在问题

您需要添加&才能在后台运行浏览器。否则,在R启动浏览器后,浏览器在浏览器进程结束之前不会将控制权返回到R

当chromium已经打开时不会出现问题的原因是,如果浏览器已经打开,chromium对命令的响应不同——它总是立即返回,即使命令没有&。”

更新 以下是我使用的确切脚本:

launch.browser = function(appUrl, browser.path=path) {
  system(sprintf('"%s" --disable-gpu --app="data:text/html,<html>
    <head>
    <title>System Configuration</title>
    </head>
    <body>
    <script>window.resizeTo(830,675);window.location=\'%s\';</script>
    </body></html>" &', browser.path, appUrl))
}
launch.browser=function(appUrl,browser.path=path){
系统(sprintf('%s)--禁用gpu--app=“data:text/html,
系统配置
window.resizeTo(830675);window.location=\'%s\';
“&',browser.path,appUrl))
}

对我来说,约翰建议的答案不起作用。不知道为什么……可能是2014年12月以来Chrome的一些设置发生了变化

在我的例子中,使用
shell(…,wait=FLASE)
而不是
system(…)

launch.browser=function(appUrl,browser.path=path){
系统(sprintf('%s)--禁用gpu--app=“data:text/html,
系统配置
window.resizeTo(830675);window.location=\'%s\';
“&',browser.path,appUrl),wait=FALSE)
}

如果您从code启动chrome,然后在该窗口内启动应用程序,该怎么办?我假设127.0.0.1是您的本地计算机或您的shiny应用程序正在运行的计算机?谢谢您的建议,但我更希望不必进行任何修改。shiny应该能够根据我阅读的文档启动浏览器。但是,有有些东西导致它无法启动,即使相同的启动命令在Shinycan之外工作正常。你能给我看一下更正后的shell脚本吗?我现在也有同样的问题。知道一些人停止建议使用Chrome可能有用,例如,请参阅。
launch.browser = function(appUrl, browser.path=path) {
  system(sprintf('"%s" --disable-gpu --app="data:text/html,<html>
    <head>
    <title>System Configuration</title>
    </head>
    <body>
    <script>window.resizeTo(830,675);window.location=\'%s\';</script>
    </body></html>" &', browser.path, appUrl))
}
launch.browser = function(appUrl, browser.path=path) {
  system(sprintf('"%s" --disable-gpu --app="data:text/html,<html>
  <head>
    <title>System Configuration</title>
  </head>
  <body>
    <script>window.resizeTo(830,675);window.location=\'%s\';</script>
  </body></html>" &', browser.path, appUrl), wait=FALSE)
}