我正在使用 Electron 制作一个桌面应用程序,并使用 Puppeteer 以 PDF 形式提供输出。
如果我使用 npm 运行我的 Puppeteer,它会按预期工作,并且当我在我的机器中使用 electro-forge 包打包它时,它也运行良好。但是,它在另一台机器上给了我这个错误:
> Error: Could not find Chrome (ver. 124.0.6367.91). This can occur if either
1. you did not perform an installation before running the script (e.g. `npx puppeteer browsers install chrome`) or
2. your cache path is incorrectly configured (which is: %USERPROFILE%\.cache\puppeteer).
For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides/configuration.
at ChromeLauncher.resolveExecutablePath (<user desktop directory>\sahacharya_fii_billgenerator-win32-x64\resources\app.asar\node_modules\puppeteer-core\lib\cjs\puppeteer\node\ProductLauncher.js:295:27)
at ChromeLauncher.executablePath (<desktop directory>\sahacharya_fii_billgenerator-win32-x64\resources\app.asar\node_modules\puppeteer-core\lib\cjs\puppeteer\node\ChromeLauncher.js:209:25)
at ChromeLauncher.computeLaunchArguments (<desktop directory>\sahacharya_fii_billgenerator-win32-x64\resources\app.asar\node_modules\puppeteer-core\lib\cjs\puppeteer\node\ChromeLauncher.js:89:37)
at async ChromeLauncher.launch (<desktop directory>\sahacharya_fii_billgenerator-win32-x64\resources\app.asar\node_modules\puppeteer-core\lib\cjs\puppeteer\node\ProductLauncher.js:70:28)
at async generatePDF (<desktop directory>\sahacharya_fii_billgenerator-win32-x64\resources\app.asar\main.js:560:25)
at async <desktop directory>\sahacharya_fii_billgenerator-win32-x64\resources\app.asar\main.js:508:25
at async WebContents.<anonymous> (node:electron/js2c/browser_init:2:82793)
当我将打包的应用程序复制到另一台计算机或制作可分发文件并使用 electro-forge make 安装它时。
我尝试像这样设置可执行的chrome路径:
const browser = await puppeteer.launch({ executablePath: myPath });
还尝试在 Puppeteer 中制作 .local-chromium 文件。当我将它打包到我的机器中并在我的机器中运行时,一切正常,但当我在任何其他机器上尝试它时,它再次给我带来上述错误
我尝试设置可执行路径,但它给出了错误路径应该采用字符串格式,即使它在打包时采用字符串格式。我尝试在 forge.config.js 文件中指定 Chromium 版本,还尝试在 puppeteer node_modules 文件夹中创建 .local-chromium 文件夹并在其中复制 Chrome。
我能够使用 puppeteer docker 容器和这个 youtube 视频
来完成此工作Dockerfile
FROM ghcr.io/puppeteer/puppeteer:latest
ENV PUPPETEER_SKIP_DOWNLOAD=true \
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci
COPY . .
USER root
CMD [ "npm", "run", "start" ]