Не в состоянии получить результат Nightmare от выполнения cron - PullRequest
1 голос
/ 24 апреля 2019

Я работал над процессом автоматизации с Nightmare и cron.После запуска Nightmare он получает значение результата и добавляет его в файл на моем локальном компьютере (проблемы с сетью не обнаружены).

var Nightmare = require('nightmare');
var fs = require('fs');
var filePath = `${process.env['HOME']}/Documents/ResultCron.txt`;

Nightmare()
    .goto('http://mywebsite.com/form')
    .type('input[id="email"]', 'XXX@gmail.com')
    .click('#submit-button')
    .wait('.formSubmitted')
    .evaluate(() => document.querySelector('.formSubmitted').value)
    .end()
    .then(result => {
      console.log(`The form submitted is:\n${result}`)
      fs.appendFileSync(filePath, `\n${result}: ${new Date()}`);
    })
    .catch(error => {
      console.error(error)
      fs.appendFileSync(filePath, `\nERROR: ${error}: ${new Date()}`);
    })

Когда я запускаю его с node /home/user/Documents/nightmareForm.js, он отлично работает и записываетв файле.Однако при запуске из cron он ничего не добавляет в файл.

Я добавил конфигурацию в crontab следующим образом:

crontab -e

# It will be executed everyday at 13:00
0 13 * * * node /home/user/Documents/nightmareForm.js

И если я сделаю grep nightmareForm.js /var/log/syslog -C 10 Я вижу, что оно выполнено: Apr 24 13:00:00 PC CRON[1223]: (root) CMD (node /home/user/Documents/nightmareForm.js)

Продолжая расследование, файл имеет следующие права (Ubuntu 18.10): -rwxr-xr-x, поэтому он должен быть исполняемым, а созданный файл имеет права: -rw-rw-rw-

Обновление: после идей @ ponury-kostek я проверил, что скрипт может писать в файл, но он никогда не достигает блоков then () или catch ()

Update2: Iпытался перехватить логи из crontab, но не выдает никакой ошибки: 0 13 * * * /usr/local/bin/node /home/user/Documents/nightmareForm.js >> /home/user/Documents/nightmareForm.log 2>&1

Есть идеи, почему из crontab скрипт не может получить доступ к блокам then () или catch ()?Спасибо

...