闪亮的应用程序未加载图形

Posted

技术标签:

【中文标题】闪亮的应用程序未加载图形【英文标题】:Shiny application not loading with graphics 【发布时间】:2019-05-28 10:34:58 【问题描述】:

我有闪亮的应用程序,在我的本地机器上运行良好。我在 centos-release-6-9.el6.12.3.x86_64 上运行的闪亮服务器上部署了该应用程序。应用程序的内容在没有任何图形的情况下被加载,如下所示:

我在 JS 控制台中收到以下消息。

Loading failed for the <script> with source “http://mamged:3838/v01/shared/bootstrap/shim/respond.min.js”. v01:18:1
ReferenceError: Shiny is not defined[Learn More] v01:21:1
Loading failed for the <script> with source “http://mamged:3838/v01/shinyjs/shinyjs-default-funcs.js”. v01:38:1
ReferenceError: shinyjs is not defined[Learn More] v01:39:1
Loading failed for the <script> with source “http://mamged:3838/v01/message-handler.js”. v01:40:1
ReferenceError: jQuery is not defined[Learn More]
    [Exception... "Favicon at "http://mamged:3838/favicon.ico" failed to load: Not Found." nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource:///modules/FaviconLoader.jsm :: onStopRequest :: line 156" data: no]

我不确定出了什么问题。

编辑

我已经放了一些示例代码来在服务器上重现该示例。

server.r

# clear console
cat("\014")


# Defining the size of file to be accepted. -1 to accept any size.
options(shiny.maxRequestSize = -1) 


# Clear workspace environment
rm(list = ls())    

# set locale
Sys.setlocale('LC_ALL','C') 

# main function
shinyServer(function(input, output,session) 

)

ui.r

library(shiny)
library(shinyjs)


filenames <- list.files(path = "data",pattern="\\.txt$")
names(filenames) <- gsub(pattern = "\\.txt$", "", filenames)
shinyUI(fluidPage(theme = "bootstrap.css",
                  (navbarPage("MAMGEDCDE",
                              position = c("fixed-top"),
                              fluid = TRUE, selected = "none", 
                              navbarMenu("Help", icon = icon("fa fa-infocircle"),

                                         tabPanel(
                                           list(
                                             a("Reference Manual", 
                                               target="_blank", href = "MAMGEDManual.pdf"),

                                             a("GPLs Supported",
                                               target="_blank", href="gpl.pdf"),

                                             a("Video Tutorials",
                                               downloadLink("AbsoluteExpression", " Absolute Expression", class=" fa fa-cloud-download"),
                                               downloadLink("DifferentialExpression", " Differential Expression", class=" fa fa-cloud-download")
                                               )
                                             ))
                                         ),

                              navbarMenu("Sample Data",
                                         tabPanel(
                                           list(
                                             downloadLink("AffymetrixData", " Affymetrix", class=" fa fa-cloud-download"),
                                             downloadLink("CodelinkData", " Codelink", class=" fa fa-cloud-download"),
                                             downloadLink("IlluminaData", " Illumina", class=" fa fa-cloud-download")
                                             ))
                                         ),

                              navbarMenu("Stand-Alone Version", icon = icon("fa fa-infocircle"),
                                         tabPanel(
                                           list(
                                             downloadLink("CodeandData", " MAMGED", class=" fa fa-cloud-download"),
                                             a("Stand-alone Manual", target = "_blank", href= "Stand-alone.pdf")
                                             )
                                           )
                                         )
                              )
                   ),

                  br(),
                  br(),
                  useShinyjs(),  ## initialize shinyjs to reset input files.
                  sidebarLayout(
                    sidebarPanel(
                      br(),

                      width = 4,
                      tabsetPanel(id = "tabs",
                                  tabPanel(id = "tab1", value = "tab1",
                                           h5("Upload Data Files"),
                                           br(),
                                           br(),

                                           fileInput("files", label = "Upload Data Files",
                                                     multiple = "TRUE",
                                                     accept=c('text/csv','text/comma-separated-values,
                                                              text/plain', '.csv','.cel','.TXT','.txt', '.zip')),

                                           uiOutput('Display_source_data'),
                                           br(),

                                           textInput("mailid", "Enter Email ID", placeholder = "Enter your email id")
                                           ),

                                  tabPanel(id = "tab2", value= "tab2",
                                           h5("Download Data",style="bold"),
                                           br(),
                                           br(),
                                           br(),
                                           textInput("jobid", "Enter Job ID", placeholder = "Enter your job id")
                                           )),
                      br(),
                      br(),

                      tags$head(tags$script(src = "message-handler.js")),
                      fluidRow(
                        conditionalPanel(
                          condition = "input.tabs == 'tab1'",
                          column(4,
                                 actionButton("Submit", label = "Submit"))
                          ),
                        conditionalPanel(
                          condition = "input.tabs == 'tab2'",
                          br(),
                          column(4,
                                 uiOutput("button")
                                 )),

                        column(4,
                               actionButton("Reset_Input", label = "Reset"))
                        ),
                      br()

                      ),

                    mainPanel(
                      titlePanel(
                        headerPanel( 
                          h2( "Analysis of Microarray Gene Expression Data",
                              align="center", style="bold"
                              )
                          )
                        ),
                      h5("test page")
                      )
                    )
                  ))

在本地机器上运行良好。

还有一件事,我是否需要使用sudo -i R 安装 r 包才能使其工作。我安装了所有没有sudo的包。

【问题讨论】:

Shiny 服务器日志文件中是否有任何错误? @ginberg 现在应用程序也没有启动并给我^[[32m[2017-02-03 17:23:56.841] [INFO] shiny-server - ^[[39mError getting worker: Error: The application exited during initialization. ^[[32m[2017-02-03 17:23:56.861] [INFO] shiny-server - ^[[39mError getting worker: Error: The application exited during initialization. 您检查应用程序日志文件了吗?默认情况下,它位于 /var/log/shiny-server 目录中。运行您的应用程序,然后检查此目录以获取最新文件。如果它们的文件已被删除,根据 Shiny Server 的版本,您可以将以下指令添加到 /etc/shiny-server/shiny-server.conf 文件(它必须在顶层):preserve_logs true;重新启动 Shiny Server 后,再次访问您的应用程序,并检查日志文件。日志文件中通常会有对您有所帮助的有用信息。 @ginberg 我查了,最新信息是^[[32m[2017-02-06 19:13:41.893] [INFO] shiny-server - ^[[39mStopping listener on 0.0.0.0:3838 ^[[32m[2017-02-06 19:13:41.894] [INFO] shiny-server - ^[[39mShutting down worker processes (with notification) 0^[[32m[2017-02-06 19:13:46.089] [INFO] shiny-server - ^[[39mShiny Server v1.4.2.786 (Node.js v0.10.40) ^[[32m[2017-02-06 19:13:46093] [INFO] shiny-server - ^[[39mUsing pidfile /var/run/shiny-server.pid。仅此而已。我有时会收到Favicon 错误 @AwaitedOne 我的建议是您提供对创建错误的代码的访问权限,或者提供显示您遇到的错误的示例代码。没有代码示例,很难调试你的情况。 【参考方案1】:

您的应用程序似乎缺少一个包。 默认情况下检查您的应用程序日志位于 /var/log/shiny-server。 您也可以将以下选项添加到您的配置文件 /etc/shiny-server/shiny-server.conf:

preserve_logs true; (at the top level)

在 Shiny Server 重新启动后,再次检查您的日志文件。 寻找丢失的包或库。希望对您有所帮助。

【讨论】:

感谢您的回答。我更新了配置文件,但在日志文件中仍然没有看到错误。【参考方案2】:

可能闪亮服务器正在以特殊用户身份运行。 假设用户名与其他服务器上的“www-data”类似。 现在的问题是 web 目录中的文件可能可以被闪亮服务器本身访问,但不能被客户端访问。长话短说:调整 Unix 文件权限用于所有文件,以便普通客户端可以访问这些文件。必须对所有应公开可用的文件(如图像、css 文件和 js 文件)执行此操作。当然,它也可以包含您想要提供的任何其他文件,例如 PDF、Office 文件等。 为了便于阅读,unix 权限必须为 0744,最后一位数字是供公众使用的,在您的情况下可能会更改为 chmod。 有关chmod 的详细说明,您可以使用man chmod 在命令行上显示手册页。

在某些环境中,所有“公共”文件通常都排序在名为“公共”或“公共”的文件夹中,然后只需递归更改这些文件夹的文件权限。即使对于这里的公用文件夹,我也使用复数,因为在不同的目录中可以有几个总是具有相同名称的文件夹。在您的服务器上,shared 文件夹似乎具有相同的功能,但并非所有公共文件都在其中排序。如果您更喜欢文件夹名称shared 而不是public,则无需更改,只需相应地调整权限即可。

我上面提到的服务器用户“www-data”的原因是 web 目录中的文件应该有这个用户作为所有者,但不需要公开。除了应该在浏览器中直接调用的文件之外,您所有的 r 文件都应该是私有的。因此,所有文件都分为公共和私人。文件所有者可以用chown调整,也可以在命令行递归调用,man chown也可以显示详细描述。

关于公共 r 文件,我不知道它们是否必须在闪亮服务器上可执行,如果是这样,那么这些文件的文件权限必须是 0755。 p>

更新 还要确保所有文件都存在于您的 www 目录中,并且该域已链接到正确的文件夹。

【讨论】:

谢谢你的回答,我认为有阅读权限-rwxrwxr-x 1 Check.sh-rw-rw-r-- 1 Job.sh-rwxrwxr-x 1 ibab ibab counter.RDatadrwxrwxrwx 2 ibab ibab data-rwxrwxrwx 1 ibab ibab log.txt-rwxrwxr-x 1 ibab ibab log_180202.txt-rwxrwxrwx 1 ibab ibab server.r-rwxrwxr-x 1 ibab ibab server1.r-rwxrwxrwx 1 ibab ibab server_offline.R @@-rwxrwxr-x 1 ibab ibab timelog.txt-rwxrwxr-x 1 ibab ibab ui.r`drwxr--r-- 2 ibab ibab www' 检查图像和 javascipt 文件的权限,可能它们必须驻留在文件夹 www www中的所有文件都有读权限。 -rwxrwxr-x 1 ibab ibab 9919087 Apr 24 2018 Illumina Data.zip-rwxrwxr-x 1 ibab ibab 861877836 Apr 24 2018 MAMGED.zip-rwxrwxr-x 1 ibab ibab 3175927 Apr 24 2018 MAMGEDManual.pdf-rwxrwxr-x 1 ibab ibab 533932 Apr 24 2018 Stand-alone.pdf-rwxrwxr-x 1 ibab ibab 263 Apr 24 2018 all_sessions.R-rwxrwxr-x 1 ibab ibab 155438 Apr 24 2018 bootstrap.css-rwxrwxr-x 1 ibab ibab 184232 Apr 24 2018 gpl.pdf-rwxrwxr-x 1 ibab ibab 174 Apr 24 2018 message-handler.js www 中缺少这些文件:v01/shared/bootstrap/shim/respond.min.jsv01/shinyjs/shinyjs-default-funcs.jsv01/message-handler.js。图像也丢失了。也许你搞砸了你的文件夹层次结构? 感谢您的宝贵时间。

以上是关于闪亮的应用程序未加载图形的主要内容,如果未能解决你的问题,请参考以下文章

闪亮的服务器不会加载应用程序

我发布闪亮的应用程序时无法加载数据

在容器外加载数据时,dockerized 闪亮的应用程序不起作用

闪亮:未选中复选框时,xts 图(xtsExtra)消失

如何在闪亮中创建加载事件或默认事件?

闪亮的服务器 - 安排 mysql 查询而不是每次加载应用程序时运行?