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

Apple Silicon(M1)DDEV环境下Puppeteer启动Chromium失败求助

解决M1 macOS下DDEV环境中Puppeteer启动失败问题

问题原因

Puppeteer无法找到Chromium浏览器的可执行文件路径,且DDEV容器默认未预装Chromium,同时M1架构的Docker镜像兼容性可能导致额外问题。

解决方案

1. 在DDEV容器内安装Chromium及依赖

进入DDEV容器并执行以下命令安装必要组件:

ddev ssh
sudo apt update && sudo apt install -y chromium chromium-driver libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2 libpangocairo-1.0-0 libx11-xcb1

验证安装成功:

which chromium-browser

输出应为/usr/bin/chromium-browser。

2. 手动指定浏览器路径(适用于Puppeteer或pa11y-ci)

  • Puppeteer代码中配置:
    在启动浏览器时明确指定路径并添加容器运行必需的参数:

    const puppeteer = require('puppeteer');
    
    (async () => {
      const browser = await puppeteer.launch({
        executablePath: '/usr/bin/chromium-browser',
        args: ['--no-sandbox', '--disable-setuid-sandbox']
      });
      // 业务代码逻辑
      await browser.close();
    })();
    
  • pa11y-ci配置文件(.pa11yci)中添加:

    {
      "defaults": {
        "browser": {
          "executablePath": "/usr/bin/chromium-browser",
          "args": ["--no-sandbox", "--disable-setuid-sandbox"]
        }
      }
    }
    

3. 使用项目本地安装的Puppeteer

避免全局安装路径冲突,在项目内本地安装Puppeteer,它会自动适配容器环境下载对应Chromium:

ddev ssh
cd /var/www/html
npm install puppeteer --save-dev

此时无需指定路径,直接启动即可:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    args: ['--no-sandbox', '--disable-setuid-sandbox']
  });
  // 业务代码逻辑
  await browser.close();
})();

4. 适配M1架构的Docker镜像

确保DDEV使用arm64架构的镜像,避免x86镜像的兼容性问题:

  • 修改.ddev/config.yaml添加:
    webimage: ddev/ddev-webserver:v1.24.6-arm64
    
  • 重启容器:
    ddev restart
    
    重启后重新执行上述安装步骤。

内容的提问来源于stack exchange,提问作者m.orange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:34:50