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

Docker镜像中运行Jest Puppeteer自动化测试失败求助

解决Docker中运行Jest-Puppeteer测试时缺失libxshmfence.so.1的问题

问题重现

运行Docker容器执行Jest-Puppeteer测试时,出现如下错误:

Error: Jest: Got error running globalSetup - /usr/src/app/node_modules/jest-environment-puppeteer/setup.js, reason: Failed to launch the browser process! /usr/src/app/node_modules/puppeteer/.local-chromium/linux-884014/chrome-linux/chrome: error while loading shared libraries: libxshmfence.so.1: cannot open shared object file: No such file or directory

问题原因

官方Node.js镜像(基于Debian/Ubuntu)默认未预装Chromium运行所需的底层系统依赖库,即使Puppeteer自带了Chromium二进制文件,也需要这些依赖才能启动浏览器。

解决方案

修改Dockerfile,在安装Node依赖前,先安装Chromium所需的系统依赖:

修改后的Dockerfile

FROM node:16.14.0
WORKDIR /usr/src/app

# 安装Chromium运行必需的系统依赖
RUN apt-get update && apt-get install -y \
    libxshmfence1 \
    libgbm-dev \
    libasound2 \
    libatk1.0-0 \
    libc6 \
    libcairo2 \
    libcups2 \
    libdbus-1-3 \
    libexpat1 \
    libfontconfig1 \
    libgcc1 \
    libgdk-pixbuf2.0-0 \
    libglib2.0-0 \
    libgtk-3-0 \
    libnspr4 \
    libpango-1.0-0 \
    libpangocairo-1.0-0 \
    libstdc++6 \
    libx11-6 \
    libx11-xcb1 \
    libxcb1 \
    libxcomposite1 \
    libxcursor1 \
    libxdamage1 \
    libxext6 \
    libxfixes3 \
    libxi6 \
    libxrandr2 \
    libxrender1 \
    libxss1 \
    libxtst6 \
    ca-certificates \
    fonts-liberation \
    libappindicator1 \
    libnss3 \
    lsb-release \
    xdg-utils \
    && rm -rf /var/lib/apt/lists/*

COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
RUN chown -R node /usr/src/app
USER node
CMD npm run test

关键说明

  • 上述依赖列表覆盖了Chromium在Debian环境下运行的所有核心依赖,不仅解决libxshmfence.so.1缺失问题,还能避免其他类似的依赖报错
  • 执行rm -rf /var/lib/apt/lists/*可以清理apt缓存,减小最终镜像体积
  • 必须在切换到node用户前执行依赖安装,因为apt命令需要root权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:18:18