shiny app with downloadable md report, error: "pandoc: Could not find data file" when run by shiny-server
shiny app with downloadable md report, error: "pandoc: Could not find data file" when run by shiny-server
我创建了一个闪亮的应用程序,它提供了一个下载按钮。按下时,将以 html 格式创建降价报告。这是应用程序:
server <- function(input, output) {
output$report <- downloadHandler(
filename = "report.html",
content = function(file){
tempReport <- file.path(tempdir(), "report.Rmd")
file.copy("report.Rmd", tempReport, overwrite = TRUE)
out <- rmarkdown::render(tempReport, output_file = file)
}
)
}
ui <- fluidPage(
downloadButton("report", label=NULL)
)
shinyApp(ui = ui, server = server)
report.Rmd 看起来像这样:
---
output: html_document
---
## Hello
```{r map}
leaflet::leaflet()
```
如果我 运行 来自 rstudio-server 的应用程序一切正常:创建并下载独立的 html 文件。它包括传单地图。
但是,如果我从 shiny-server 运行 它得到的只是以下错误:
processing file: report.Rmd
output file: report.knit.md
pandoc: Could not find data file /usr/lib64/R/library/leaflet/htmlwidgets/lib/leaflet/
Warnung: Error in : pandoc document conversion failed with error 97
Stack trace (innermost first):
53: pandoc_convert
52: convert
51: rmarkdown::render
50: download$func [/srv/shiny-server/biserver/downReport/app.R#7]
1: runApp
Error : An error has occurred. Check your logs or contact the app author for clarification.
该错误似乎是由rmarkdown、shiny-server 和leaflet 组合触发的。例如,从报告中删除传单可以修复它。
非常感谢任何帮助。
这是 sessionInfo() 的输出:
R version 3.3.3 (2017-03-06)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
locale:
[1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C
LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8
[5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8
LC_PAPER=de_DE.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] shiny_1.0.3
loaded via a namespace (and not attached):
[1] Rcpp_0.12.10 digest_0.6.12 rprojroot_1.2 mime_0.5
R6_2.2.1 xtable_1.8-2 jsonlite_1.4
[8] backports_1.0.5 magrittr_1.5 evaluate_0.10 stringi_1.1.5
leaflet_1.1.0 rmarkdown_1.5 tools_3.3.3
[15] stringr_1.2.0 htmlwidgets_0.8 crosstalk_1.0.0 yaml_2.1.14
httpuv_1.3.3 htmltools_0.3.6 knitr_1.15.1
我正在使用 Shiny Server v1.5.3.838 (Node.js v6.10.0)。这是我闪亮的-server.conf:
run_as shiny;
# Define a server that listens of port 3839.
server {
listen 3839;
location / {
site_dir /srv/shiny-server/biserver;
log_dir /var/log/shiny-server;
}
}
同样的问题...
已解决。
shiny-server 和 rstudio 服务器在安装目录中嵌入了 pandoc。
只需删除闪亮服务器的坏 pandoc 二进制文件,并在同一位置对新的 pandoc 版本执行逻辑 link,或者在我的情况下,我使用了本地 rstudio 服务器的 pandoc 版本正在工作。
我创建了一个闪亮的应用程序,它提供了一个下载按钮。按下时,将以 html 格式创建降价报告。这是应用程序:
server <- function(input, output) {
output$report <- downloadHandler(
filename = "report.html",
content = function(file){
tempReport <- file.path(tempdir(), "report.Rmd")
file.copy("report.Rmd", tempReport, overwrite = TRUE)
out <- rmarkdown::render(tempReport, output_file = file)
}
)
}
ui <- fluidPage(
downloadButton("report", label=NULL)
)
shinyApp(ui = ui, server = server)
report.Rmd 看起来像这样:
---
output: html_document
---
## Hello
```{r map}
leaflet::leaflet()
```
如果我 运行 来自 rstudio-server 的应用程序一切正常:创建并下载独立的 html 文件。它包括传单地图。
但是,如果我从 shiny-server 运行 它得到的只是以下错误:
processing file: report.Rmd
output file: report.knit.md
pandoc: Could not find data file /usr/lib64/R/library/leaflet/htmlwidgets/lib/leaflet/
Warnung: Error in : pandoc document conversion failed with error 97
Stack trace (innermost first):
53: pandoc_convert
52: convert
51: rmarkdown::render
50: download$func [/srv/shiny-server/biserver/downReport/app.R#7]
1: runApp
Error : An error has occurred. Check your logs or contact the app author for clarification.
该错误似乎是由rmarkdown、shiny-server 和leaflet 组合触发的。例如,从报告中删除传单可以修复它。
非常感谢任何帮助。
这是 sessionInfo() 的输出:
R version 3.3.3 (2017-03-06)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
locale:
[1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C
LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8
[5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8
LC_PAPER=de_DE.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] shiny_1.0.3
loaded via a namespace (and not attached):
[1] Rcpp_0.12.10 digest_0.6.12 rprojroot_1.2 mime_0.5
R6_2.2.1 xtable_1.8-2 jsonlite_1.4
[8] backports_1.0.5 magrittr_1.5 evaluate_0.10 stringi_1.1.5
leaflet_1.1.0 rmarkdown_1.5 tools_3.3.3
[15] stringr_1.2.0 htmlwidgets_0.8 crosstalk_1.0.0 yaml_2.1.14
httpuv_1.3.3 htmltools_0.3.6 knitr_1.15.1
我正在使用 Shiny Server v1.5.3.838 (Node.js v6.10.0)。这是我闪亮的-server.conf:
run_as shiny;
# Define a server that listens of port 3839.
server {
listen 3839;
location / {
site_dir /srv/shiny-server/biserver;
log_dir /var/log/shiny-server;
}
}
同样的问题... 已解决。
shiny-server 和 rstudio 服务器在安装目录中嵌入了 pandoc。
只需删除闪亮服务器的坏 pandoc 二进制文件,并在同一位置对新的 pandoc 版本执行逻辑 link,或者在我的情况下,我使用了本地 rstudio 服务器的 pandoc 版本正在工作。