You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

flexdashboard编译失败:SSL/TLS连接错误,需明确下载资源

解决防火墙环境下flexdashboard编译的SSL握手失败问题

问题根源

你的flexdashboard配置中指定了Google字体(Prompt和JetBrains Mono),编译时flexdashboard会自动尝试从Google Fonts服务器下载这些字体的资源文件(包括字体样式CSS和字体文件)。由于防火墙环境屏蔽了外部资源访问,导致curl请求SSL握手失败,触发报错。

flexdashboard尝试获取的资源

具体涉及的资源是:

  • Google Fonts提供的Prompt字体样式文件及对应字体文件
  • Google Fonts提供的JetBrains Mono字体样式文件及对应字体文件

这些资源的请求路径均指向Google的外部服务器,无法在你的受限环境中直接访问。

解决方案

方案1:改用本地/CRAN可访问的字体

放弃Google字体,替换为系统已安装的字体或可通过CRAN安装的字体包(如extrafont)提供的字体:

  1. 修改YAML配置中的字体设置,替换为系统字体名称:
    output: 
      flexdashboard::flex_dashboard:
        theme:
          bg: "#101010"
          fg: "#FDF7F7" 
          primary: "#ED79F9"
          base_font: "Arial"  # 替换为系统已有的字体
          code_font: "Courier New"  # 替换为系统已有的等宽字体
        orientation: columns
        vertical_layout: fill
    
  2. 若需更多字体选项,可安装extrafont包导入系统字体:
    install.packages("extrafont")
    library(extrafont)
    font_import()  # 导入系统字体
    loadfonts()    # 加载字体
    
    之后可以用fonts()查看可用字体名称,替换到YAML配置中。

方案2:手动下载字体并本地引用

若必须使用指定的Google字体,可手动下载后本地引用:

  1. 从可访问的渠道下载Prompt和JetBrains Mono字体的TTF/OTF文件,将文件放到项目目录下的fonts文件夹中
  2. 在Rmd文件开头添加自定义CSS块,声明本地字体:
    ```{css, echo=FALSE}
    @font-face {
      font-family: 'Prompt';
      src: url('fonts/Prompt-Regular.ttf') format('truetype');
      font-weight: normal;
      font-style: normal;
    }
    @font-face {
      font-family: 'JetBrains Mono';
      src: url('fonts/JetBrainsMono-Regular.ttf') format('truetype');
      font-weight: normal;
      font-style: normal;
    }
    
  3. 修改YAML配置中的字体设置为本地字体名称:
    base_font: "Prompt"
    code_font: "JetBrains Mono"
    

内容的提问来源于stack exchange,提问作者Stephen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:35:19