【问题标题】:How can Puppeteer's uploadFile work on Heroku?Puppeteer 的 uploadFile 如何在 Heroku 上工作?
【发布时间】:2020-12-21 18:11:49
【问题描述】:

我正在尝试自动执行从网站下载 mp3 文件并上传到另一个网站的任务。使用 Puppeteer,我可以使用以下代码做到这一点。

// ... Download the file and save locally
// Sets the value of the file input to fileToUpload
inputUploadHandle.uploadFile(fileToUpload);
// ... submit the form 

这在我的 Mac 上运行良好。我可以下载文件并通过表单提交上传。当我在 Heroku 上部署它时,我知道 Heroku 的临时文件系统会将文件保存到 /app 文件夹。我什至可以通过 NodeMailer 将保存的文件作为附件发送。

但是在我的 Heroku 应用程序上,当 Puppeteer 提交表单时,文件并没有按应有的方式上传。提交就像未选择文件一样发生。

我知道我可以解决一些问题,比如从我自己的服务器上抓取文件。但我仍然很好奇为什么会发生这种情况。是什么让 Puppeteer uploadFile 在 Heroku 上失败?

顺便说一下,这里有两个链接可能对背景有所帮助:

  1. Practical Puppeteer: How to upload a file programmatically
  2. puppeteer-heroku-buildpack

【问题讨论】:

    标签: heroku puppeteer


    【解决方案1】:

    解决方案:如果你想使用uploadFile,不要使用Puppeteer 2.1.1 版本,现在坚持使用2.0.0。在你的 package.json 中:

    "puppeteer": "2.0.0"
    

    我最近检查并发现uploadFile 在Puppeteer 5.5.0 中仍然损坏。

    这里是细节。当我在我的 Mac 上开发时,我没有为 puppeteer 指定一个版本。但我碰巧使用了一个可以使用 uploadFile 的版本。但是,每次你推送到 Heroku 时,Heroku 都会检查你的 package.json 以安装所有依赖项。就我而言,Heroku 更新到了最新版本(在撰写本文时为 2.1.1),它破坏了 uploadFile 功能。

    尽管我很早就打印出 Chromium 版本并注意到 Heroku 使用的是更高版本,但我从未想过我应该使用旧版本的 Puppeteer 进行测试。相反,我花了很多时间测试其他解决方法,但都失败了。无论如何,一旦你排除了不可能,剩下的,无论多么不可能,都必须是事实。

    我将在 Puppeteer 上发布一个问题,并希望在下一个版本中解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-15
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 2011-11-07
      • 1970-01-01
      相关资源
      最近更新 更多