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

Azure Web应用中无法启动Playwright浏览器问题求助

Azure Web应用中无法启动Playwright浏览器问题求助

最近我在Azure Web应用里尝试用Playwright生成PDF的时候,突然碰到了这个报错,实在头疼:

browserType.launch: Target page, context or browser has been closed
Browser error while loading shared libraries: libglib-2.0.so.0: cannot open shared object file: No such file or directory

我启动Chromium浏览器用的参数大概是这样的:

const browser = await chromium.launch({  
  headless: true,  
  // 其他配置参数
});

折腾了一番,总结了几个针对Azure Web App环境的解决办法,分享给大家:

  • 用Playwright官方Docker镜像部署
    如果你的应用是Docker化部署的,直接用微软提供的Playwright官方镜像当基础镜像就行,里面已经预装了所有Chromium需要的系统依赖,完全不用操心缺库问题。比如Dockerfile可以这么写:

    FROM mcr.microsoft.com/playwright:v1.40.0-jammy
    # 接下来就是常规的复制代码、安装依赖、启动应用的步骤
    
  • 手动给Azure Web App安装系统依赖
    要是你是直接部署代码到Node.js栈的Web App,可以这么操作:

    1. 先打开Azure门户里你的Web App,开启SSH功能,然后进入Kudu控制台(地址是https://<你的应用名称>.scm.azurewebsites.net)
    2. 在控制台里执行下面的命令,把缺失的依赖都装上:
      apt-get update && apt-get install -y libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libgtk-3-0 libpango-1.0-0 libcairo2
      
    3. 也可以把安装命令加到package.json的启动脚本里,这样每次应用重启都会自动装依赖,不过缺点是启动会慢一点。比如:
      "scripts": {
        "start": "apt-get update && apt-get install -y libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libgtk-3-0 libpango-1.0-0 libcairo2 && node app.js"
      }
      
  • 确认Playwright浏览器二进制文件已安装
    有时候部署的时候可能没把浏览器的二进制文件传上去,或者权限有问题,这时候可以在部署后执行:

    npx playwright install chromium
    

    这个命令会确保Chromium的二进制文件和配套依赖都安装到位。

备注:内容来源于stack exchange,提问作者Mohamed Said

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:49:39