如何在PKG中配置动态生成的Report目录资源?
解决方案
1. 移除无效的Assets配置
你之前配置的report/*.* || report/*.png不会生效,因为打包时Report目录下还没有生成任何截图文件,pkg无法打包不存在的资源。直接从package.json的pkg.assets中删除这条规则。
2. 运行时动态创建Report目录
在代码中添加逻辑,确保程序启动时Report目录存在,避免截图时因目录不存在报错。示例代码:
const fs = require('fs'); const path = require('path'); // 确定Report目录的绝对路径(以当前工作目录为基准) const reportDir = path.resolve(process.cwd(), 'Report'); // 递归创建目录(不存在则创建) if (!fs.existsSync(reportDir)) { fs.mkdirSync(reportDir, { recursive: true }); } // 截图时指定该目录下的路径 await page.screenshot({ path: path.join(reportDir, `screenshot-${Date.now()}.png`) });
3. 处理Puppeteer浏览器二进制文件的打包(关键注意点)
用pkg打包Puppeteer应用时,容易出现浏览器找不到的问题,需要把Puppeteer的本地浏览器二进制文件加入assets配置:
在package.json中修改pkg配置:
"pkg": { "assets": [ "node_modules/puppeteer/.local-chromium/**/*" ] }
然后在代码中指定浏览器路径:
const puppeteer = require('puppeteer'); const browser = await puppeteer.launch({ // 让Puppeteer自动定位打包后的浏览器路径 executablePath: puppeteer.executablePath(), headless: 'new' });
若使用puppeteer-core,则需手动指定浏览器二进制文件的打包路径,确保运行时能正确访问。
内容的提问来源于stack exchange,提问作者BlueFits
相关产品推荐
相关产品推荐

