Azure弹性消耗计划中Azure Function出现Playwright驱动未找到错误
解决Azure弹性消耗计划中Playwright驱动找不到的问题
错误原因
Azure弹性消耗计划的Linux运行环境下,Playwright的node驱动文件未正确安装或程序无法识别其路径,导致启动时抛出Driver not found异常。
解决方案
1. 在Azure DevOps Pipeline中配置Playwright依赖安装
在构建阶段添加以下步骤,确保浏览器及驱动被打包到部署文件中:
# 安装Playwright CLI工具 dotnet tool install --global Microsoft.Playwright.CLI # 安装Chromium浏览器及对应驱动 playwright install chromium # 将驱动目录复制到构建产物目录,确保部署时包含 cp -r ~/.playwright ./$(Build.ArtifactStagingDirectory)/.playwright
若使用YAML管道,可配置为:
- task: DotNetCoreCLI@2 inputs: command: 'custom' custom: 'tool' arguments: 'install --global Microsoft.Playwright.CLI' - script: | playwright install chromium cp -r ~/.playwright ./$(Build.ArtifactStagingDirectory)/.playwright displayName: 'Install Playwright Chromium and copy driver files'
2. 配置Function应用环境变量
登录Azure门户,进入你的Function应用,在配置 > 应用程序设置中添加:
- 名称:
PLAYWRIGHT_BROWSERS_PATH - 值:
./.playwright
该变量会引导Playwright从网站根目录加载驱动和浏览器文件。
3. 修正startup.sh脚本(若使用)
确保脚本安装浏览器所需系统依赖并配置路径:
#!/bin/bash # 安装Chromium依赖的系统库 apt-get update && apt-get install -y libnss3 libatk-bridge2.0-0 libdrm-dev libxkbcommon-dev libgbm-dev libasound-dev libatspi2.0-0 libxshmfence-dev # 设置Playwright路径变量 export PLAYWRIGHT_BROWSERS_PATH=./.playwright
在Program.cs中执行脚本时,确保工作目录正确:
var startupProcess = new Process { StartInfo = new ProcessStartInfo { FileName = "/bin/bash", Arguments = "./startup.sh", UseShellExecute = false, RedirectStandardOutput = true, WorkingDirectory = Environment.CurrentDirectory } }; startupProcess.Start(); startupProcess.WaitForExit();
4. 代码调整(可选)
在启动Playwright前,显式设置环境变量确保路径生效:
Environment.SetEnvironmentVariable("PLAYWRIGHT_BROWSERS_PATH", "./.playwright"); using var playwright = await Playwright.CreateAsync(); await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = true, Args = [ "--no-sandbox", "--disable-gpu", "--disable-setuid-sandbox", "--disable-dev-shm-usage" ] });
内容的提问来源于stack exchange,提问作者JOYBOY
相关产品推荐
相关产品推荐

