手動下載 Chrome,解決 puppeteer 無法使用問題
因為網路原因,國內安裝 puppeteer
的時候會報網路超時。這裡使用 puppeteer-core
之後使用手動下載的 Chrome
進行操作。思路很簡單,安裝一個不帶瀏覽器的 puppeteer
,再使用的時候將瀏覽器地址指向一個可執行的 Chrome
瀏覽器檔案。
安裝
安裝 puppeteer-core
。
yarn add puppeteer-core
找到 puppeteer 中對應的瀏覽器並下載
在 node_modules/puppeteer-core/lib/BrowserFetcher.js
中找到各平臺 Chrome
下載地址。其中 %s
替換為 DEFAULT_DOWNLOAD_HOST
的值, %d
替換為版本號。
在 node_modules/puppeteer-core/packages.json
中找到版本號
替換後得到下載地址
ofollow,noindex">https://storage.googleapis.com/chromium-browser-snapshots/Mac/579032/chrome-mac.zip
下載後解壓,放在專案目錄中,這裡我放在 chrome 下。
使用
這樣就可以使用了。
使用程式碼
const puppeteer = require('puppeteer-core'); const path = require('path'); (async () => { const browser = await puppeteer.launch({ // 這裡注意路徑指向可執行的瀏覽器。 // 各平臺路徑可以在 node_modules/puppeteer-core/lib/BrowserFetcher.js 中找到 // Mac 為 '下載檔案解壓路徑/Chromium.app/Contents/MacOS/Chromium' // Linux 為 '下載檔案解壓路徑/chrome' // Windows 為 '下載檔案解壓路徑/chrome.exe' executablePath: path.resolve('./chrome/Chromium.app/Contents/MacOS/Chromium') }); const page = await browser.newPage(); await page.setViewport({ width: 375, height: 667, deviceScaleFactor: 1, isMobile: true }) await page.goto('https://marxjiao.com/'); await page.screenshot({path: 'marx-blog.png'}); await browser.close(); })();
執行檔案
node index.js
執行後可看到,圖片已經截圖出來了