部署使用fileInput上传数据的闪亮应用时出错

时间:2018-04-13 21:21:41

标签: r shiny shinyapps

部署我的第一个闪亮的应用程序 - 简单的html解析器,让用户上传一个html文件,然后解析它以获取LinkedIn上的分享/提及/喜欢的信息。

应用程序在本地运行良好(在部署之前进行测试),Rstudio在部署时不会显示任何错误。但是,当我使用shinyapps链接运行它时,似乎上传无法完成,我没有得到任何输出。

本地的内容

打开应用

Start

上传.html文件

enter image description here

shinyapps.io

的样子

enter image description here

我已经修改了文件名,因为它包含识别信息。

代码如下:

library(rvest)
library(shiny)
ui <- fluidPage(
  # theme = "https://bootswatch.com/4/superhero/bootstrap.css",
  title = "LinkedIn Report",

  fluidRow(
    column(12,
           fileInput("infile", "Choose .html file", 
              accept = "text/html", multiple = F) )
  ),

  fluidRow(
    column(12,
           tableOutput("savedLocation") )
  ), 

  fluidRow(
    column(12,
           tableOutput("parsedData") ),
    column(8, 
           downloadButton("downloadData", "Download"))
  )

)


server <- function(input, output){
  dd <- reactive(input$infile)

  output$savedLocation <- renderTable({
    if(is.null(input$infile)){
      return(data.frame(Elapsed = character(), 
                        Time = character(),
                        Name = character(), 
                        Action = character()))
    }else{
      return(dd())
    }
  })

  actual_data <- reactive({
    if(is.null(input$infile)){
      asdad <- data.frame(Elapsed = character(), 
                          Time = character(),
                          Name = character(), 
                          Action = character())
    }else{
      notifications <- read_html(input$infile$datapath)
      name_action <- gsub("\\n", "", notifications %>% html_nodes(".nt-card__text--3-line") %>% html_text())
      tme <- trimws(gsub("\\n", "", notifications %>% html_nodes(".nt-card__time-ago") %>% html_text()))
      action <- notifications %>% html_nodes(".nt-card__text--3-line strong") %>% html_text
      nme <- trimws( sapply(1:length(name_action), function(z) gsub(action[z], "", name_action[z])))


  asdad <- data.frame(Elapsed = tme, Time = elap(tme), Name = nme, Action = action)
    }
    return(asdad)
  })

  output$parsedData <- renderTable({ actual_data()})

  output$downloadData <- downloadHandler(
    filename = "yourdata.csv", 
    content = function(filename){ write.table(actual_data(), file = filename, 
                                              row.names = F, sep = ",")}
  )
}

shinyApp(ui = ui, server = server)

这可能与我有免费帐户有关吗?正在上传的文件大小不超过420kb。

我查看了以下问题,但他们没有解决上述问题:

  1. Shiny app deployment error on shinyapps.io
  2. Error in deploying a shiny app
  3. Unable to deploy shiny app on shiny server
  4. Rstudio有一个使用fileInput的类似示例,可在此处找到:https://shiny.rstudio.com/articles/upload.html

2 个答案:

答案 0 :(得分:0)

它不是一个答案,但它仍然可能有帮助。我重写了你的代码,所以我可以执行它并将其上传到shinyappsio。

我重写了actual_data被动反应:

 actual_data <- reactive({
    if(is.null(input$infile)){
      asdad <- data.frame(Elapsed = character(), 
                          Time = character(),
                          Name = character(), 
                          Action = character())
    }else{
      asdad1 <- read_html(input$infile$datapath)
      asdad2 <- html_nodes(x = asdad1, css = "#titleCast span.itemprop")
      asdad <- html_text(asdad2)
  }
    return(asdad)
  })

我使用了这个website中的html。

在本地运行应用正常,但在上传到shinyapps.io之后,这就是我在firefox中遇到的错误(500 - 内部服务器错误):

  

错误        /usr/share/luajit/share/lua/5.1/lapis/application.lua:73:尝试索引本地&#39; curr&#39; (字符串值)

     

回溯

     

堆栈追溯:
  /usr/share/luajit/share/lua/5.1/lapis/application.lua:73:在功能上   &#39; add_params&#39;
  /usr/share/luajit/share/lua/5.1/lapis/application.lua:394:在功能上   &#39;处理&#39; /usr/share/luajit/share/lua/5.1/lapis/application.lua:416:   在功能上      [C]:in   功能&#39; xpcall&#39;
  /usr/share/luajit/share/lua/5.1/lapis/application.lua:412:在功能上   &#39;派遣&#39; /usr/share/luajit/share/lua/5.1/lapis/nginx.lua:181:in   功能&#39;服务&#39; access_by_lua(redx.conf:162):1:在函数中   

您是否在linux上试用了该应用? Shinyapps.io基于linux,您可能必须在您的应用程序中包含其他软件包,甚至在Linux系统上安装软件,尽管我不确定这是否可能。

当fileUpload上传一个csv文件而不是html时,一切都按预期工作,在本地和shinyapps.io上。所以问题似乎是html文件或html-scraping。

答案 1 :(得分:0)

为了后人的缘故,另一个几乎没有答案。对于上下文,我之前在 Shinyapps.io 上也遇到过几次这个问题,但从 RStudio 运行时从未在 Mac 或 Windows 上遇到过。特别是,我用压缩文件(在某些情况下是压缩的 .txt 文件,在其他情况下是 ESRI Shapefiles)得到了这个。我在上传进度条中看到的格式化 HTML 如下所示。

作为经常使用 VPN 和代理的用户,我发现在上传过程中连接断开可能会导致我出现这种情况。如果您的互联网连接有问题,我会调查一下。


  <!DOCTYPE HTML>
<html lang="en">
   <head>
      <title>Error</title>
      <style type="text/css"> body { color: #222; background: #ddd; font-family: sans-serif; margin: 20px; } h1, h2, pre { margin: 20px; } .box { background: white; overflow: hidden; box-shadow: 1px 1px 8px gray; border-radius: 1px; } .footer { text-align: center; font-family: serif; margin: 10px; font-size: 12px; color: #A7A7A7; } </style>
   </head>
   <body>
      <div class="box">
         <h1>Error</h1>
         <pre>/opt/openresty/luajit/share/lua/5.1/lapis/application.lua:73: attempt to index local &#039;curr&#039; (a string value)</pre>
         <h2>Traceback</h2>
         <pre> stack traceback: /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:73: in function &#039;add_params&#039; /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:394: in function &#039;handler&#039; /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:416: in function &lt;/opt/openresty/luajit/share/lua/5.1/lapis/application.lua:412&gt; [C]: in function &#039;xpcall&#039; /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:412: in function &#039;dispatch&#039; /opt/openresty/luajit/share/lua/5.1/lapis/nginx.lua:181: in function &#039;serve&#039; access_by_lua(nginx.conf:232):1: in function &lt;access_by_lua(nginx.conf:232):1&gt;</pre>
      </div>
      <div class="footer">lapis 1.0.4</div>
   </body>
</html>