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

使用Asciidoctor-pdf与asciidoctor-diagrams生成Mermaid图表失败求助

解决Ubuntu环境下AsciiDoc转PDF时Mermaid图表生成的沙箱错误

首先修正你命令中的语法问题:-a ./book/mybook.adoc是错误的,-a选项用于设置AsciiDoc属性,文档路径不需要前缀,正确的命令格式应为:

asciidoctor-pdf -r asciidoctor-diagram -a allow-uri-read ./book/mybook.adoc

针对你遇到的Chrome沙箱启动失败问题,由于GitHub Actions的Ubuntu Runner以非特权用户运行,无法修改chrome-sandbox的权限或内核参数,最直接的解决方式是让Mermaid CLI(mmdc)跳过沙箱检查,具体有两种实现方式:

方式一:通过AsciiDoc属性传递mmdc参数

在asciidoctor-pdf命令中添加-a mermaid-cli-opts="--no-sandbox",直接给mmdc传递无沙箱启动参数:

- name: Convert AsciiDoc to PDF
  run: |
    set -o pipefail
    OUTPUT=$(asciidoctor-pdf -r asciidoctor-diagram -a allow-uri-read -a mermaid-cli-opts="--no-sandbox" ./book/mybook.adoc 2>&1)
    echo "$OUTPUT"
    if echo "$OUTPUT" | grep -i -E "error.*image|could not generate image|failed to generate image"; then
      echo "Error: Image generation failed in asciidoctor-pdf output."
      exit 1
    fi

方式二:设置Puppeteer环境变量

通过PUPPETEER_ARGS环境变量,让Puppeteer启动浏览器时强制禁用沙箱:

- name: Convert AsciiDoc to PDF
  run: |
    set -o pipefail
    export PUPPETEER_ARGS="--no-sandbox --disable-setuid-sandbox"
    OUTPUT=$(asciidoctor-pdf -r asciidoctor-diagram -a allow-uri-read ./book/mybook.adoc 2>&1)
    echo "$OUTPUT"
    if echo "$OUTPUT" | grep -i -E "error.*image|could not generate image|failed to generate image"; then
      echo "Error: Image generation failed in asciidoctor-pdf output."
      exit 1
    fi

补充说明

你之前尝试的sudo sysctl和修改沙箱文件权限的操作在GitHub Runner环境中不可行,因为Runner默认以非root用户执行,没有权限修改系统级配置。而GitHub Runner的环境本身是隔离且安全的,禁用沙箱不会带来安全风险。

内容的提问来源于stack exchange,提问作者Arc-E-Tect

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:18:19