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

Ubuntu 20.04服务器上Playwright项目无法运行求助

问题分析

核心报错是Failed to install browsers, exit code: 134,exit code 134通常意味着进程因信号终止(SIGABRT)或内存不足退出,结合Playwright Java在生产环境的部署场景,大概率是系统依赖缺失、浏览器安装权限/网络问题,或是资源配额不足导致的。

解决方案

1. 补全生产环境无头浏览器依赖

Playwright的无头浏览器(如Chromium)依赖系统底层库,极简生产环境往往缺少这些组件,直接导致安装/启动失败:

  • Debian/Ubuntu系统执行:
    apt-get update && apt-get install -y libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2 libpangocairo-1.0-0 libgtk-3-0
    
  • CentOS/RHEL系统执行:
    yum install -y atk cups-libs gtk3 libXcomposite libXcursor libXdamage libXext libXi libXrandr libXScrnSaver libXtst pango at-spi2-atk libXt alsa-lib libdrm mesa-libgbm
    

2. 提前预安装浏览器,规避运行时自动安装风险

生产环境常存在网络限制、权限不足,导致Playwright首次启动时自动下载浏览器失败,建议在构建/本地阶段完成安装:

  • Maven项目执行:
    mvn exec:java -e -Dexec.mainClass=com.microsoft.playwright.CLI -Dexec.args="install chromium"
    
  • Gradle项目执行:
    gradle run --args="install chromium"
    
  • 部署时将预安装的浏览器目录(默认在~/.cache/ms-playwright)同步到生产环境,或通过环境变量指定路径:
    export PLAYWRIGHT_BROWSERS_PATH=/opt/preinstalled-playwright-browsers
    

3. 调整权限与内存配额

  • 检查运行服务的用户是否有写入权限到默认缓存目录,可在代码中指定有权限的目录:
    Playwright.create(new Playwright.CreateOptions().setEnv(Map.of("PLAYWRIGHT_BROWSERS_PATH", "/opt/playwright-browsers")));
    
  • 排查生产环境容器/宿主机的内存限制,浏览器启动需要一定内存配额,exit code 134也可能是内存不足导致的进程终止,尝试调高内存分配。

4. 禁用自动浏览器安装(预安装后)

代码中显式跳过自动安装流程,避免运行时触发不必要的安装操作:

Playwright.create(new Playwright.CreateOptions().setSkipInstallBrowsers(true));

5. 修正NGINX配置小问题(非直接诱因,但建议修复)

你的NGINX配置中server_name末尾缺少分号,虽不直接导致Playwright报错,但可能引发NGINX启动异常,修正后:

server_name my-url.website.com;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:27:26