闪亮:为所有错误显示一条消息

时间:2015-06-17 09:13:58

标签: r shiny

我在R's Shiny中有一个应用程序。我想处理消息,以便用户看不到发生了什么错误。我知道通过

 tags$style(type="text/css",
                        ".shiny-output-error { visibility: hidden; }",
                        ".shiny-output-error:before { visibility: hidden; }"
            ),

我可以完全禁用错误消息,但我想向用户显示一条消息,如

  

发生错误。请联系管理员。

每当发生任何类型的消息时(仍然保留原始错误消息在日志中)。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

有趣的问题。我只想了一分钟,所以我确信有更好,更清洁的解决方案使用R代码,但这是一个CSS解决方案,因为你在问题中使用了CSS

基本上,因为我看到你使用了:before,所以它让我意识到你可以只改变那个伪元素的文本。

runApp(shinyApp(
  ui = fluidPage(
    tags$style(type="text/css",
               ".shiny-output-error { visibility: hidden; }",
               ".shiny-output-error:before { visibility: visible; content: 'An error occurred. Please contact the admin.'; }"
    ),
    textOutput("text")
  ),
  server = function(input, output, session) {
    output$text <- renderText({
      stop("lalala")
    })
  }
))

答案 1 :(得分:3)

您可以在应用中的某处添加options(shiny.sanitize.errors = TRUE)。然后,所有错误消息将替换为一般错误消息:

错误:发生错误。检查您的日志或联系应用程序作者进行说明。

如果您确实希望特定错误通过未经过清理的处理,则可以使用base::stop(shiny::safeError(e))而不是base::stop(e),其中e是错误字符串或类“错误”的对象。

参考:https://shiny.rstudio.com/articles/sanitize-errors.html