我在R's Shiny中有一个应用程序。我想处理消息,以便用户看不到发生了什么错误。我知道通过
tags$style(type="text/css",
".shiny-output-error { visibility: hidden; }",
".shiny-output-error:before { visibility: hidden; }"
),
我可以完全禁用错误消息,但我想向用户显示一条消息,如
发生错误。请联系管理员。
每当发生任何类型的消息时(仍然保留原始错误消息在日志中)。有什么想法吗?
答案 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
是错误字符串或类“错误”的对象。