node.js - 将 PM2 与本地 Windows 服务用户一起使用时,如何配置 Puppeteer 以写入特定的临时文件夹?
问题描述
我们正在使用PM2
. 对于 PDF 生成,我们使用Puppeteer
.
Chromium 从 pm2 开始,因为本地服务用户使用了错误的临时文件夹
当前安装:PM2 运行为使用pm2-installer
https://github.com/jessety/pm2-installer安装的服务(使用离线安装程序,因为目标是没有互联网的 Windows 服务器)。此 PM2 启动一个节点应用程序,该应用程序启动一个 puppeteer-Chromium 实例。因此,此 Chrome 与本地服务用户一起运行。
Puppeteer 使用特定的 userDataDir 启动。
现在的问题是 Puppeteer 尝试写入C:\Users\Administrator\AppData\Local\Temp\...
它没有权限写入的地方,因为它没有以管理员身份运行。
Chrome 调试日志说:Failed to create temporary file
所以问题是:
- 为什么 Chrome 写入管理员的 Temp 文件夹,而不是写入特定于本地服务用户或配置的 userDataDir 的临时文件夹(chrome 将其用于其他文件,因此配置正确)?
- 如何更改 Chromium 以使用它有权使用的 Temp 文件夹?
解决方案
您可以更改您的 puppeteer 下载路径await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './mydownloadfolder'});
推荐阅读
- angular - 如果复选框本身被选中,有没有办法检查 mat-checkbox?
- azure - EasyAuth `.auth/login/aad/callback` 等效于 localhost Azure Functions Core Tools (v3)
- python - 如何使用 Python 和 PyQt5 制作 VLC 缩放视频以填充窗口?
- react-native - React Native 的静态代码分析工具
- joomla - 无法安装 joomla 模板:JInstaller: :Install: 找不到 XML 安装文件。并且无法检测清单文件
- python - Python 是否有一个等于 Unix basename 的 basename 函数?
- pytest - 如何禁用 .pytest_cache 目录或在完成后立即将其删除
- openapi - 在 OpenAPI 中,我可以使用常规模式组件作为参数吗?
- javascript - JavaScript:防止 setInterval 函数在单击按钮之前运行
- swiftui - 在 SwiftUI 中的 tabview 中嵌入 webview