You need to enable JavaScript to run this app. 如何让Puppeteer/Playwright在Azure Linux Web App Service正常运行
优惠活动
大模型
产品
解决方案
定价
更多

如何让Puppeteer/Playwright在Azure Linux Web App Service正常运行

Puppeteer部署到Azure Linux Web App Service故障排查

故障背景

  • 基于Puppeteer开发的网页转PDF功能,本地环境可完全正常运行
  • 部署到Azure Linux Web App Service后出现运行报错
  • 核心实现代码如下:
const puppeteer = require("puppeteer");
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(
      `https://${env.domain}/authorize? 
       client_id=${env.clientId}&response_type=token&redirect_uri=${env.redirectUri}`,
      { waitUntil: "networkidle2" }
    );
await page.waitForSelector('input[name="email"]', {
      visible: true,
      timeout: 5000
    });
await page.type('input[name="email"]', env.email, {delay: 50});
await page.type('input[name="password"]', env.password, {delay: 50});
await page.click('button[type="submit"]');
await page.waitForNavigation({ waitUntil: "networkidle2" });
const clientUrl = await page.evaluate(() => window.location.href);
await page.pdf({path: 'sendgrid/html-page.pdf', format: 'A4'});
await browser.close();  

报错信息

  • 报错1:

找不到版本为818858的浏览器,请运行 PUPPETEER_PRODUCT=firefox npm install 或 PUPPETEER_PRODUCT=firefox yarn install 下载受支持的Firefox浏览器二进制文件

  • 报错2:

/node_modules/puppeteer/.local-chromium/linux-782078/chrome-linux/chrome 加载共享库时出错:libgobject-2.0.so.0:无法打开共享对象文件:没有该文件或目录

修复方案

1. 解决浏览器二进制找不到问题

  • 跳过Puppeteer自带Chromium下载,使用Azure官方预装的浏览器
    在项目根目录的package.json中添加配置,或在部署时设置环境变量 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true:
    "puppeteer": {
      "skip_chromium_download": true
    }
    
  • 调整Puppeteer启动参数,指定系统预装Chromium路径,补充容器运行必需的安全参数:
    const browser = await puppeteer.launch({
      executablePath: '/usr/bin/chromium-browser',
      args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-dev-shm-usage'
      ]
    });
    

2. 解决系统共享库缺失问题

  • 优先使用Azure官方提供的Node.js Linux Web App镜像,该镜像已预装所有无头浏览器运行所需的系统依赖,无需额外安装。
  • 若使用自定义容器,在Dockerfile构建阶段安装全部必需依赖:
    apt-get update && apt-get install -y \
    libglib2.0-0 \
    libnss3 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    libcups2 \
    libdrm2 \
    libxkbcommon0 \
    libxcomposite1 \
    libxdamage1 \
    libxfixes3 \
    libxrandr2 \
    libgbm1 \
    libasound2
    

3. 稳定运行优化配置

  • 替换networkidle2等待策略:Azure Web App网络环境存在持续后台请求,易导致超时,改为domcontentloaded后搭配固定元素等待逻辑。
  • 调整PDF输出路径:Azure Linux Web App仅/home目录下可读写,将PDF输出路径改为绝对路径:
    await page.pdf({path: '/home/sendgrid/html-page.pdf', format: 'A4'});
    
  • 限制浏览器内存占用,在启动参数中添加--js-flags="--max-old-space-size=4096",避免内存溢出崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 12:24:03