Кукловод работает с терминала, но не с crontab - PullRequest
0 голосов
/ 07 февраля 2020

ищет помощи у экспертов. При запуске Puppeteer из терминала, он просто работает как положено и генерирует файл PDF (часть скрипта const browser = await puppeteer.launch();)

При запуске через оболочку генерируется файл PDF

$ /bin/sh /tmp/grafana_report_pup.sh

grafana_report_pup. sh

node /tmp/grafana_pdf.js http://localhost:3000/d/qP-sbQEZz/new-dashboard?kiosk $GF_USER:$GF_PASSWORD $GF_OUT

Проблема возникла, когда я установил crontab:

# m h  dom mon dow   command
44 10 * * * /bin/sh /tmp/grafana_report_pup.sh  > /tmp/graf.log 2>&1

Я получил ошибку об отсутствии песочницы поэтому мне было предложено передать аргументы:

const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});

Даже при использовании предложенных аргументов при запуске crontab генерируется ошибка ниже

(node:56385) UnhandledPromiseRejectionWarning: Error: Evaluation failed: TypeError: Cannot read property 'getBoundingClientRect' of undefined
    at __puppeteer_evaluation_script__:2:67
    at ExecutionContext._evaluateInternal (/tmp/node_modules/puppeteer/lib/ExecutionContext.js:122:13)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  -- ASYNC --
    at ExecutionContext.<anonymous> (/tmp/node_modules/puppeteer/lib/helper.js:111:15)
    at DOMWorld.evaluate (/tmp/node_modules/puppeteer/lib/DOMWorld.js:112:20)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  -- ASYNC --
    at Frame.<anonymous> (/tmp/node_modules/puppeteer/lib/helper.js:111:15)
    at Page.evaluate (/tmp/node_modules/puppeteer/lib/Page.js:860:43)
    at Page.<anonymous> (/tmp/node_modules/puppeteer/lib/helper.js:112:23)
    at /tmp/grafana_pdf.js:59:30
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:56385) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:56385) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Ссылка на grafana_pdf. js

...