Chromium revision is not downloaded :Puppeteer根据不同的操作系统下载对应的Chromium

Problem: Chromium revision is not downloaded

  "scripts": {
    "start": "electron .",
    "packager": "electron-packager ./ awesome-app --platform=win32 --arch=all --out ./Executable --electronVersion 2.0.7 --overwrite --icon=./icon.ico"
  },

使用Electron在Windows64平台上打包为win64、ia32的应用,这在通常情况下应该都没问题;不过在这次的应用中使用了Puppeteer,打包后ia32应用在Windows32位系统上无法启动chrome,查看日志发现报错:Error: Chromium revision is not downloaded

Analysis

Puppeteer是在执行npm install过程中下载的,对应的路径为:\node_modules\puppeteer\.local-chromium

.local-chromium下有win64-579032\chrome-win32,启动其中的chrome.exe,查看版本信息:

Chromium
70.0.3508.0(开发者内部版本) (64 位)

也就是说,打包后不论什么系统、平台,puppeteer启动的始终都是win64的这个Chromium(即在哪个平台上打包,默认只会有相应平台的Chromium),显然,问题来了,在32位的Windows系统上,是无法启动64位的Chromium的。

那么,如何同时下载多个平台或者指定平台的Chromium呢?

文件\node_modules\puppeteer\install.js将告诉我们答案。

Solution

  • 大概扫一下这个install.js文件,基本能断定,Chromium的版本信息由当前的操作系统确定。提取有用的部分代码。
let platform = 'win32'; // mac, linux, win32 or win64
const BrowserFetcher = require('puppeteer/lib/BrowserFetcher');
let browserFetcher = new BrowserFetcher({ platform: platform });
const revision = require('puppeteer/package').puppeteer.chromium_revision;
const revisionInfo = browserFetcher.revisionInfo(revision);

console.log(revision)
console.log(revisionInfo)

browserFetcher.download(revisionInfo.revision)
  .then(() => { console.log('Done!') })
  .catch(err => { console.log('Error', err) })
  • 可将以上代码保存为puppeteer.js,然后在package.json的脚本中做如下配置,在打包前执行脚本,实现不同平台下puppeteer的下载。
  "scripts": {
    "start": "electron .",
    "puppeteer": "node puppeteer",
    "packager": "electron-packager ./ awesome-app --platform=win32 --arch=all --out ./Executable --electronVersion 2.0.7 --overwrite --icon=./icon.ico"
  },
Note
  • 上述代码在puppeteer@1.7.0测试通过。

  • puppeteer的下载被墙了,用默认配置下载超慢,甚至下载失败,修改目标服务器配置:

npm config set puppeteer_download_host https://storage.googleapis.com.cnpmjs.org

Reference


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Heartsuit

别说什么鼓励,这就是互联网乞讨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值