问题:我在 R 中有一个闪亮的应用程序,包括一个传单 OSM 映射,它在本地运行得很好,没有警告消息,但在线崩溃 - 并且日志文件输出没有什么帮助。
问题:如何解决Shiny应用上线崩溃的问题?
这是应用程序代码:
# 0 Preparations ####
library(shiny)
library(shinymanager)
#library(shinyjs)
library(leaflet)
library(SUNGEO)
library(RJSONIO)
#library(reticulate)
ui <- fluidPage(
# Here are the input variables:
column(6,
h4("Location"),
div(id="location",
textInput("place","Place",
value=NA,
placeholder="leave empty if NA"),
actionButton("showmap","Show on map", class = "btn-primary")
)
),
# Here comes the map:
column(6,
div(id="map",
leafletOutput("uk")))
)
server <- function(input, output, session) {
# What the map should show in the beginning:
output$uk <- renderLeaflet({
leaflet() %>%
addTiles() %>%
fitBounds(-6, 60, 0, 50)
})
# What the map should show once we click on "Show on map":
placeQuery <- eventReactive(input$showmap, {
geocode_osm(input$place, user_agent = "[email protected]")
}
)
observe({
if (!is.null(placeQuery()$longitude) & ! is.null(placeQuery()$latitude)) {
placeLng <- placeQuery()$longitude
placeLat <- placeQuery()$latitude
leafletProxy("uk") %>%
clearMarkers() %>%
addMarkers(lng=placeLng, lat=placeLat)
}
})
}
使用rsconnect::showLogs(appName="app-osm",streaming=TRUE)
的
日志文件读取如下,shinyapps.io日志文件读取非常相似,但不显示最后一行:
2023-05-16T14:09:32.633727+00:00 shinyapps[9119732]: Running on host: b7e245a1bc93
2023-05-16T14:09:32.636159+00:00 shinyapps[9119732]: Running as user: uid=10001(shiny) gid=10001(shiny) groups=10001(shiny)
2023-05-16T14:09:32.636185+00:00 shinyapps[9119732]: Connect version: 2023.03.0
2023-05-16T14:09:32.636190+00:00 shinyapps[9119732]: LANG: C.UTF-8
2023-05-16T14:09:32.636194+00:00 shinyapps[9119732]: Working directory: /srv/connect/apps/app-osm
2023-05-16T14:09:32.636361+00:00 shinyapps[9119732]: Using R 4.1.3
2023-05-16T14:09:32.636376+00:00 shinyapps[9119732]: R.home(): /opt/R/4.1.3/lib/R
2023-05-16T14:09:32.636648+00:00 shinyapps[9119732]: Content will use current R environment
2023-05-16T14:09:32.636656+00:00 shinyapps[9119732]: R_LIBS: (unset)
2023-05-16T14:09:32.636663+00:00 shinyapps[9119732]: .libPaths(): /opt/R/4.1.3/lib/R/library
2023-05-16T14:09:32.643960+00:00 shinyapps[9119732]: shiny version: 1.7.4
2023-05-16T14:09:32.643980+00:00 shinyapps[9119732]: httpuv version: 1.6.11
2023-05-16T14:09:32.643984+00:00 shinyapps[9119732]: rmarkdown version: 2.21
2023-05-16T14:09:32.643995+00:00 shinyapps[9119732]: knitr version: 1.42
2023-05-16T14:09:32.644005+00:00 shinyapps[9119732]: jsonlite version: 1.8.4
2023-05-16T14:09:32.644010+00:00 shinyapps[9119732]: RJSONIO version: 1.3.1.8
2023-05-16T14:09:32.644015+00:00 shinyapps[9119732]: htmltools version: 0.5.5
2023-05-16T14:09:32.644042+00:00 shinyapps[9119732]: reticulate version: (none)
2023-05-16T14:09:32.644250+00:00 shinyapps[9119732]: Using pandoc: /opt/connect/ext/pandoc/2.16
2023-05-16T14:09:33.021968+00:00 shinyapps[9119732]: Starting R with process ID: '93'
2023-05-16T14:09:33.022354+00:00 shinyapps[9119732]: Shiny application starting ...
2023-05-16T14:09:39.997112+00:00 shinyapps[9119732]: Listening on http://127.0.0.1:34751
2023-05-16T14:09:46.470476+00:00 shinyapps[9119732]: Warning: Error in : lexical error: invalid char in json text.
2023-05-16T14:09:46.470520+00:00 shinyapps[9119732]: <html> <head> <title>Access blo
2023-05-16T14:09:46.470526+00:00 shinyapps[9119732]: (right here) ------^
2023-05-16T14:09:46.483350+00:00 shinyapps[9119732]: 109: parse_string
2023-05-16T14:09:46.483386+00:00 shinyapps[9119732]: 108: parseJSON
2023-05-16T14:09:46.483394+00:00 shinyapps[9119732]: 107: parse_and_simplify
2023-05-16T14:09:46.483399+00:00 shinyapps[9119732]: 106: jsonlite::fromJSON
2023-05-16T14:09:46.483404+00:00 shinyapps[9119732]: 105: geocode_osm
2023-05-16T14:09:46.483409+00:00 shinyapps[9119732]: 104: eventReactiveValueFunc [/srv/connect/apps/app-osm/app.R#46]
2023-05-16T14:09:46.483427+00:00 shinyapps[9119732]: 60: townQuery
2023-05-16T14:09:46.483436+00:00 shinyapps[9119732]: 59: observe [/srv/connect/apps/app-osm/app.R#53]
2023-05-16T14:09:46.483440+00:00 shinyapps[9119732]: 58: <observer>
2023-05-16T14:09:46.483445+00:00 shinyapps[9119732]: 15: <Anonymous>
2023-05-16T14:09:46.483451+00:00 shinyapps[9119732]: 13: fn
2023-05-16T14:09:46.483454+00:00 shinyapps[9119732]: 8: retry
2023-05-16T14:09:46.483457+00:00 shinyapps[9119732]: 7: connect$retryingStartServer
2023-05-16T14:09:46.483460+00:00 shinyapps[9119732]: 6: eval
2023-05-16T14:09:46.483466+00:00 shinyapps[9119732]: 5: eval
2023-05-16T14:09:46.483470+00:00 shinyapps[9119732]: 4: eval
2023-05-16T14:09:46.483474+00:00 shinyapps[9119732]: 3: eval
2023-05-16T14:09:46.483476+00:00 shinyapps[9119732]: 2: eval.parent
2023-05-16T14:09:46.483480+00:00 shinyapps[9119732]: 1: local
应用程序已在线:https://leakaftan.shinyapps.io/app-osm/(输入位置名称,然后单击“在地图上显示”)。 [更新:自从我找到解决方案(见下文)后,该应用程序现在运行顺利 - 至少应该如此。]
我已经尝试过
由于从 RStudio 本地运行应用程序时没有警告消息,并且当单击本地版本中的按钮时,图钉实际上出现在右侧地图上,因此我不知道是什么导致该应用程序在线崩溃,而不是离线崩溃。
通过shiny app提交查询时指定user_agent:
placeQuery <- eventReactive(input$showmap, {
geocode_osm(input$place, user_agent = "[email protected]")
}
此问题的解决方案与
Warning: Error in : lexical error: invalid char in json text
行有关,表明geocode_osm
不会生成json文件,而是生成html文件,很可能表明访问已被拒绝。