返回

Docker化 Puppeteer: 解决"Could Not Find Expected Browser (Chrome) Locally"的问题

开发工具

搭建Puppeteer Docker环境

在Docker中运行Puppeteer既便捷又高效,能够帮助我们轻松处理各种网络爬取、页面测试等任务。
但是,在使用Puppeteer时,如果我们遇到这样的报错信息:"Could Not Find Expected Browser (Chrome) Locally",该如何解决呢?下面,我们将介绍如何解决该问题。

解决"Could Not Find Expected Browser (Chrome) Locally"问题

为了解决这个问题,我们可以按照以下步骤操作:

  1. 确保Chromium已被安装 :Puppeteer需要Chromium浏览器才能正常运行。如果我们还没有安装Chromium,我们可以使用以下命令安装它:
sudo apt-get install chromium-browser
  1. 检查Chromium路径 :确认Chromium的可执行文件是否存在,通常位于/usr/bin/chromium-browser。如果没有找到,我们可以在/opt/google/chrome//usr/lib/chromium-browser/目录下查找。

  2. 在Dockerfile中添加--no-sandbox标志 :此标志允许Puppeteer在Docker容器内运行。我们可以通过在Dockerfile中添加如下行来实现:

RUN --no-sandbox /usr/bin/chromium-browser --headless --disable-gpu --disable-dev-shm-usage --disable-setuid-sandbox
  1. 重新构建并运行Docker镜像 :在编辑了Dockerfile后,我们需要重新构建镜像并运行容器:
docker build -t puppeteer-docker .
docker run -it --rm puppeteer-docker
  1. 尝试运行Puppeteer :现在我们可以尝试运行Puppeteer来检查是否已经解决问题:
node index.js

Puppeteer的其他常见问题

除了"Could Not Find Expected Browser (Chrome) Locally"之外,在使用Puppeteer时,我们还可能会遇到其他常见问题,例如:

  • 无法在无头模式下运行Puppeteer :确保已在Dockerfile中添加了--headless标志,并且Chromium支持无头模式。
  • Puppeteer无法截屏 :检查Chromium是否具有访问文件系统的权限。
  • Puppeteer无法点击元素 :确保Puppeteer已正确加载页面,并且元素是可点击的。

总结

希望本文能帮助你顺利解决问题,有效地利用 Puppeteer 优化你的开发流程。