我想打包我使用 puppeteer 的电子应用程序并将其分发给 Windows 和 Mac 用户。阅读 puppeteer 的文档后,我在本地项目存储库中配置了 chromium 的安装,我可以看到 chromium 文件。
const { join } = require('path');
/**
* @type {import("puppeteer").Configuration}
*/
module.exports = {
// Changes the cache location for Puppeteer.
cacheDirectory: join(__dirname, 'public/.cache', 'puppeteer'),
};
在启动 puppeteer 时,我给出了 chromium 的路径,它工作正常,但是当我打包我的应用程序时,它说它无法检测到 chromium。
这是我的文件结构
public/
.cache/
puppeteer/chrome/../Google chrome
electron/
electron.js
puppeteer/
index.js
这是我的木偶代码 -
const chromePath = os.platform() === 'darwin'
? '/../.cache/puppeteer/chrome/mac-119.0.6045.105/chrome-mac-x64/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing'
: '\\..\\.cache\\puppeteer\\chrome\\win32-119.0.6045.105\\chrome-win32\\chrome.exe';
try {
const browser = await puppeteer.launch({
headless: false,
defaultViewport: false,
channel: 'chrome',
executablePath: chromePath,
});
}catch(err){
console.log(err)
}
即使我让它工作,我也不想将我的应用程序与沉重的 chrome 应用程序打包在一起,这使得我的最终包大小约为 ~500mb
我怎样才能让我的电子应用程序下载铬并在用户安装我的电子应用程序时安装它并在启动木偶操纵者时设置路径?
你应该使用puppeteer-core。这是 Puppeteer 的轻量级版本,可以启动现有的浏览器安装或连接到远程浏览器。它默认不下载任何浏览器。