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,可以这么操作:- 先打开Azure门户里你的Web App,开启SSH功能,然后进入Kudu控制台(地址是
https://<你的应用名称>.scm.azurewebsites.net) - 在控制台里执行下面的命令,把缺失的依赖都装上:
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 - 也可以把安装命令加到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" }
- 先打开Azure门户里你的Web App,开启SSH功能,然后进入Kudu控制台(地址是
确认Playwright浏览器二进制文件已安装
有时候部署的时候可能没把浏览器的二进制文件传上去,或者权限有问题,这时候可以在部署后执行:npx playwright install chromium这个命令会确保Chromium的二进制文件和配套依赖都安装到位。
备注:内容来源于stack exchange,提问作者Mohamed Said
相关产品推荐
相关产品推荐

