微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Shinyapps.io 上没有运行的闪亮应用程序:与字体有关?

如何解决Shinyapps.io 上没有运行的闪亮应用程序:与字体有关?

我开发了一个闪亮的应用程序,它在我设备的浏览器中运行良好。但是,当我在 Shinyapps.io 上上传应用程序时,出现“与服务器断开连接”的错误。从shinyapps.io我得到这个应用日志:

2021-04-27T04:11:08.075959+00:00 shinyapps[4036798]: Running on host: 8c947af8f6fc
2021-04-27T04:11:08.084768+00:00 shinyapps[4036798]: Server version: 1.8.6.1
2021-04-27T04:11:08.084799+00:00 shinyapps[4036798]: LANG: de_DE.UTF-8
2021-04-27T04:11:08.084811+00:00 shinyapps[4036798]: shiny version: 1.6.0
2021-04-27T04:11:08.084811+00:00 shinyapps[4036798]: R version: 4.0.2
2021-04-27T04:11:08.084845+00:00 shinyapps[4036798]: rmarkdown version: (none)
2021-04-27T04:11:08.084822+00:00 shinyapps[4036798]: httpuv version: 1.5.4
2021-04-27T04:11:08.084857+00:00 shinyapps[4036798]: jsonlite version: 1.7.1
2021-04-27T04:11:08.084857+00:00 shinyapps[4036798]: knitr version: 1.30
2021-04-27T04:11:08.084870+00:00 shinyapps[4036798]: rjsonio version: (none)
2021-04-27T04:11:08.297255+00:00 shinyapps[4036798]: Using jsonlite for JSON processing
2021-04-27T04:11:08.301048+00:00 shinyapps[4036798]: 
2021-04-27T04:11:08.301050+00:00 shinyapps[4036798]: Starting R with process ID: '73'
2021-04-27T04:11:08.084879+00:00 shinyapps[4036798]: htmltools version: 0.5.1.1
2021-04-27T04:11:08.085019+00:00 shinyapps[4036798]: Using pandoc: /opt/connect/ext/pandoc/2.11
2021-04-27T04:11:08.330665+00:00 shinyapps[4036798]: 
2021-04-27T04:11:08.330667+00:00 shinyapps[4036798]: Listening on http://127.0.0.1:39137
2021-04-27T04:11:08.426988+00:00 shinyapps[4036798]: Attache Paket: ‘shinydashboard’
2021-04-27T04:11:08.426986+00:00 shinyapps[4036798]: 
2021-04-27T04:11:08.426988+00:00 shinyapps[4036798]: 
2021-04-27T04:11:08.427714+00:00 shinyapps[4036798]: The following object is masked from ‘package:graphics’:
2021-04-27T04:11:08.427715+00:00 shinyapps[4036798]: 
2021-04-27T04:11:08.427715+00:00 shinyapps[4036798]:     Box
2021-04-27T04:11:08.427716+00:00 shinyapps[4036798]: 
2021-04-27T04:11:08.443079+00:00 shinyapps[4036798]: 
2021-04-27T04:11:08.442706+00:00 shinyapps[4036798]: 
2021-04-27T04:11:08.442707+00:00 shinyapps[4036798]: Attache Paket: ‘DT’
2021-04-27T04:11:08.442707+00:00 shinyapps[4036798]: 
2021-04-27T04:11:08.443079+00:00 shinyapps[4036798]: The following objects are masked from ‘package:shiny’:
2021-04-27T04:11:08.443080+00:00 shinyapps[4036798]:     dataTableOutput,renderDataTable
2021-04-27T04:11:08.443080+00:00 shinyapps[4036798]: 

所以,我在里面看不到任何有用的东西,但在浏览器日志中我得到:

GEThttps://user.shinyapps.io/webapp_example/_w_77b8af3e/AdminLTE-2.0.6/fonts/Source_Sans_Pro_700.ttf
[HTTP/2 404 Not Found 1446ms]

downloadable font: download Failed (font-family: "Source Sans Pro" style:normal weight:700 stretch:100 src index:2): status=2147746065 source: https://user.shinyapps.io/webapp_example/_w_77b8af3e/AdminLTE-2.0.6/fonts/Source_Sans_Pro_700.ttf

在应用程序的用户界面中,我使用了 html 标签和图标。这是 ui 的开头:

ui <-  dashboardPage(
  dashboardHeader(title = "Example"
  ),dashboardSidebar(sidebarMenu(id = "menu1",sidebarMenuOutput("menu"))
  ),dashboardBody(
    tabItems(
      tabItem(tabName="title",fluidRow(
                Box(
                  tags$br(),tags$dt(list(icon("pen"),"Project Title")),tags$ol(
                    tags$br(),tags$li(
                      list(
                        "Give your project a title under ",icon("pen"),tags$b("Project Title"))," in the ",icon("bars"),tags$b(" Menu")," on the left-hand side"
                    ),tags$br(),tags$li(
                      list(
                        "Continue with",icon("database"),tags$b("Data Preparation")
                      )
                    )
                  ),width = 12,collapsible = TRUE,title = list(icon("info-circle"),"INSTRUCTIONS"),status = "primary",solidHeader = TRUE,)
              )
      ),...............

你知道如何解决这个“与服务器断开连接”的错误吗?这是因为我使用的字体/图标在我的本地 Windows 机器上运行,而不是在 Shinyapps.io 服务器上运行,因为它在 linux 上运行?

请告诉我您是否需要更多的应用代码。只是尽量保持最小...

谢谢, 扬

解决方法

我已经几年没试过了,但我认为这应该可行。

(1) 在您的目录中创建一个名为“www”的文件夹。当您将应用程序上传到 Shinyapps.io 时,使用您的 rsconnect 上传该文件夹。在该文件夹内,包含字体的 .ttf 文件。

(2) 在您闪亮的应用中,但在 ui/server 调用之外,也将 library(extrafont); loadfonts() 包含在您的应用中。

(3) 在您的 ui/server 之外的代码中也包含此内容。

dir.create('~/.fonts') 
file.copy("www/xkcd.ttf","~/.fonts")  
system('fc-cache -f ~/.fonts')  

这是我以前使用的字体:xkcd.ttf 的旧示例。您将用您的字体名称替换 xkcd。

如果这不起作用,请告诉我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。