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

  • 上述代碼在[email protected]測試通過。

  • 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!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章