Jenkins Debian环境运行Puppeteer脚本找不到Chromium问题求助
解决方案:Puppeteer无法找到Chromium(rev.1095492)
核心问题分析
报错根源是Puppeteer 19.7.1需要对应版本的Chromium(rev.1095492),但当前环境未正确下载/配置该版本,同时存在chromedriver与Puppeteer版本不兼容的问题(chromedriver 108.0.0 对应Chromium 108,而Puppeteer 19.7.1依赖Chromium 109)。
分步解决步骤
1. 修复依赖版本不匹配
修改package.json中的chromedriver版本,使其与Puppeteer 19.7.1兼容:
"devDependencies": { "chromedriver": "^109.0.0", "date-and-time": "^2.4.1", "lighthouse": "^9.6.8", "log4js": "^6.7.1", "puppeteer": "^19.7.1" }
2. 正确安装本地项目依赖
你用的npm install -g是全局安装,不会在项目本地node_modules中部署依赖,导致Puppeteer无法读取本地Chromium。替换为以下命令:
# 清理旧依赖文件 rm -rf node_modules package-lock.json # 强制下载对应版本Chromium并安装本地依赖 PUPPETEER_SKIP_DOWNLOAD=false npm install
如果Jenkins网络受限,可通过国内镜像加速:
PUPPETEER_DOWNLOAD_HOST=https://npm.taobao.org/mirrors PUPPETEER_SKIP_DOWNLOAD=false npm install
3. 调整缓存路径与权限
Jenkins运行用户可能无/root/.cache/puppeteer的读写权限,可指定项目内的缓存目录:
- 在执行脚本前添加环境变量:
export PUPPETEER_CACHE_DIR=/var/lib/jenkins/workspace/你的项目名/.puppeteer-cache
- 或在代码中直接指定Chromium路径:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ executablePath: './node_modules/puppeteer/.local-chromium/linux-1095492/chrome-linux/chrome' }); // 后续业务代码 })();
4. 补充系统依赖
已安装的系统依赖基本完整,可补充安装部分环境缺失的库:
apt-get install -y libxshmfence-dev
最终Jenkins执行脚本示例
将执行流程调整为:
1. apt-get update 2. apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 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 wget libgbm-dev libxshmfence-dev 3. rm -rf node_modules package-lock.json 4. PUPPETEER_DOWNLOAD_HOST=https://npm.taobao.org/mirrors PUPPETEER_SKIP_DOWNLOAD=false npm install 5. npm run MyScriptName
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

