Как Puppeteer uploadFile может работать на Heroku? - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь автоматизировать задачу загрузки mp3-файлов с веб-сайта и загрузки на другой веб-сайт. С Puppeteer я могу сделать это с помощью следующего кода.

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

Это прекрасно работает на моей маме c. Я могу скачать файл и загрузить его через форму отправки. Когда я развернул его на Heroku, я знал, что эфемерная файловая система Heroku сохранит файл в папку / app. И я даже могу отправить этот сохраненный файл через NodeMailer в качестве вложения.

Но в моем приложении Heroku, когда Puppeteer отправляет форму, файл загружается не так, как должно быть. Отправка происходит так, как будто файл не выбран.

Я знаю, что у меня могут быть обходные пути, такие как захват файла с моего собственного сервера. Но мне все еще интересно, почему это происходит. Что делает Puppeteer uploadFile неудачным на Heroku?

Кстати, вот две ссылки, которые могут помочь с фоном:

  1. Практический кукловод: Как загрузить файл программно
  2. кукловод-геройку-buildpack

1 Ответ

0 голосов
/ 21 марта 2020

Решение: если вы хотите использовать uploadFile, не используйте Puppeteer версии 2.1.1, а пока придерживайтесь 2.0.0. В вашей упаковке. json:

"puppeteer": "^2.0.0"

Вот деталь. Когда я развивал свою маму c, я не указывал версию для кукловода. Но мне довелось использовать версию, в которой работает uploadFile. Однако каждый раз, когда вы отправляете sh в Heroku, Heroku будет проверять ваш пакет. json, чтобы установить все зависимости. В моем случае Heroku обновился до последней версии (к моменту написания этой статьи 2.1.1), что нарушило функцию uploadFile.

Несмотря на то, что я распечатал версию Chromium на раннем этапе и заметил, что Heroku использует более высокую версию, мне никогда не приходило в голову, что я должен протестировать более старую версию Puppeteer. Вместо этого я потратил много времени на тестирование других обходных путей, которые все провалились. В любом случае, как только вы устраните невозможное, все остальное, каким бы невероятным оно ни было, должно стать истиной.

Я опубликую проблему на Puppeteer и надеюсь, что это будет исправлено в следующем выпуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...