我尝试使用 Puppeteer 和 Docker 来部署应用程序,但总是遇到相同的错误:找不到浏览器:
Error: Browser was not found at the configured executablePath (/usr/bin/google-chrome-stable)
throw new Error(`Browser was not found at the configured executablePath (${launchArgs.executablePath})`);
即使我使用推荐的图像并修改浏览器路径,我仍然遇到相同的错误。 我可以做些什么来使用 Docker 部署 Puppeteer 应用程序吗? 我的应用程序包括使用 Puppeteer 生成 PDF,它是使用 NestJs 构建的。
谢谢!
我尝试在容器内安装 Chrome,引用官方 Puppeteer 镜像,使用 puppeteer-core,但我总是遇到同样的错误。即使更改可执行路径,错误也始终保持不变,始终引用“/usr/bin/google-chrome-stable”。
Dockerfile:
# Base image
FROM ghcr.io/puppeteer/puppeteer:23.3.0
# Create app directory
WORKDIR /app
# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./
# Install app dependencies
RUN npm install
# Bundle app source
COPY . .
EXPOSE 4001
# Start the server using the production build
CMD ["npm", "run", "start:prod"]
浏览器服务单例:
async onModuleInit() {
const browserConfigs = {
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox'],
browser: 'chrome',
} as puppeteer.PuppeteerLaunchOptions;
if (this.profile !== 'development') {
browserConfigs.executablePath = '/usr/bin/google-chrome-stable)';
}
this.browser = await puppeteer.launch(browserConfigs);
this.page = await this.browser.newPage();
this.page.setDefaultTimeout(0);
this.page.setDefaultNavigationTimeout(0);
}
傀儡师版本:23.3.0
发生这种情况是因为 puppeteer docker 镜像中没有 google-chrome-stable。要获取浏览器可执行文件,您只需使用如下所示的 Nodejs 脚本即可。
console.log(require('puppeteer').executablePath())
您可以按照他们的文档,
对官方 docker 映像执行相同的操作docker run -i --init --cap-add=SYS_ADMIN --rm \
ghcr.io/puppeteer/puppeteer:latest \
node -e "console.log(require('puppeteer').executablePath())"
这将打印如下所示的位置,
/home/pptruser/.cache/puppeteer/chrome/linux-131.0.6778.85/chrome-linux64/chrome
使用官方 docker 镜像时无需提供任何特定的可执行路径。它已经安装在那里了。