Puppeteer:为不同的平台下载Chromium

时间:2017-12-11 16:59:06

标签: electron chromium puppeteer

我正在使用Puppeteer构建一个UI-automator,我将其作为Electron-packaged应用程序发送。除了这个问题外,它的工作非常顺畅:

当应用程序在不同于打包应用程序的平台上执行时,会引发 {strong> Chromium is not downloaded异常。

更好地说,我在Linux环境中开发并且我在Linux和Windows上打包我的应用程序,Linux应用程序运行良好,Windows应用程序没有。

问题是: Chromium是在npm install时间下载的,并且它是根据当前平台有选择地完成的。作为当前的平台Linux,这个非常版本的Chromium随后在每个平台的应用程序上发布。

我应该能够做到以下其中一项:

  1. 在npm安装时(在开发机器上)下载所有平台的Chromium
  2. 在包装时选择性下载铬(仍在开发机器上)
  3. 强制我的用户在运行时下载Chromium(例如,首次使用时)
  4. 问题是我还没有找到任何可用于此目的的Puppeteer配置。

    由于

2 个答案:

答案 0 :(得分:3)

在npm安装期间,node_modules/puppeteer/install.js完成了Chromium下载。您可以从应用程序的构建脚本中调用此代码。例如:

const Downloader = require('puppeteer/lib/Downloader');
const revision = require('puppeteer/package').puppeteer.chromium_revision;

Downloader.createDefault().downloadRevision('win64', revision, () => undefined)
  .then(() => { console.log('Done!') })
  .catch(err => { console.log('Error', err) })

答案 1 :(得分:0)

@Pasi答案的更新,以下内容适用于"puppeteer": "^1.15.0"

const puppeteer = require('puppeteer');
const browserFetcher = puppeteer.createBrowserFetcher({ platform: 'win64' });
const revision = require('puppeteer/package').puppeteer.chromium_revision;

browserFetcher.download(revision)
  .then(() => console.log('Done'))
  .catch(error => console.log('Error', error))