如何解决Puppeteer安装Chrome版本不匹配的报错问题?
问题原因与解决方案
为什么安装的Chrome版本和Puppeteer需求不一致?
Puppeteer和Chrome/Chromium版本是严格绑定的:每个Puppeteer版本都对应一个特定的浏览器版本,两者版本不匹配就会触发找不到浏览器的报错。你遇到的问题大概率是以下两种情况:
- 执行
npx puppeteer browsers install chrome时,调用的是全局安装的旧版Puppeteer,它对应的Chrome版本是122;而本地项目里npm install的是新版Puppeteer,对应需要Chrome 127。 - 你可能设置了
PUPPETEER_SKIP_DOWNLOAD环境变量,导致npm install时Puppeteer没有自动下载对应版本的浏览器。
解决方法
方法1:使用本地项目的Puppeteer安装对应浏览器
不要直接用全局的npx puppeteer,而是调用项目依赖中的Puppeteer来安装浏览器,这样会自动匹配项目里Puppeteer对应的版本:
npx --no-install puppeteer browsers install chrome
(如果用Yarn,执行yarn puppeteer browsers install chrome即可)
方法2:手动指定需要的Chrome版本安装
如果你明确知道需要的版本是127.0.6533.88,可以直接指定版本号安装:
npx puppeteer browsers install chrome@127.0.6533.88
方法3:检查并取消浏览器下载跳过设置
如果之前设置了PUPPETEER_SKIP_DOWNLOAD环境变量,会阻止Puppeteer自动下载对应浏览器。你可以:
- 取消该环境变量(比如在终端执行
unset PUPPETEER_SKIP_DOWNLOAD,或者移除配置文件中的相关设置) - 重新执行
npm install,Puppeteer会自动下载匹配版本的Chrome
方法4:临时指定浏览器路径(不推荐)
如果暂时不想重新安装,也可以在代码里手动指定已安装的Chrome路径,但版本不匹配可能导致API调用异常,仅作为临时方案:
import puppeteer from 'puppeteer'; (async () => { const browser = await puppeteer.launch({ executablePath: '/root/.cache/puppeteer/chrome/linux-122.0.6261.111/chrome-linux64/chrome', }); // 后续代码逻辑 await browser.close(); })();
内容的提问来源于stack exchange,提问作者nullromo
相关产品推荐
相关产品推荐

