node-cron не выполняет скрипт на интервале только console.log

1

При первом запуске он будет запускать приложение app.js, однако в промежутке он пропускает его. Что я могу делать неправильно?

var cron = require('node-cron');

cron.schedule('*/10 * * * * *', function(){
    var shell = require('./app.js');
     commandList = [
        "node app.js"
        ]

        console.log('Bot successfully executed'); 

});

Журнал:

ec2-user:~/environment $ node forever.js
Bot successfully executed
You have already retweeted this Tweet.
You have already retweeted this Tweet.
Bot successfully executed
Bot successfully executed
Bot successfully executed
Bot successfully executed
Bot successfully executed
Bot successfully executed
Bot successfully executed
Bot successfully executed
Теги:
bots

1 ответ

1
Лучший ответ

Я предполагаю, что ваш app.js выполняет код, поэтому он выполняется только путем его app.js (и требует кэширования, поэтому он выполняется только один раз).

Вы должны вернуть функцию из вашего app.js и вызвать это при каждом запуске.

// app.js
module.exports = () => { 
    // your original code here
};

// forever.js
var cron = require('node-cron');
var shell = require('./app.js');

cron.schedule('*/10 * * * * *', function(){
    shell();

    console.log('Bot successfully executed');
});

Или, может быть, вы могли бы очистить require кэш перед запуском:

delete require.cache[require.resolve('./app.js')]

  • 0
    Это добилось цели. Что в итоге позволило это сработать? Я попытался простой возврат без удачи.
  • 0
    Вы имеете в виду return из app.js без части module.exports ?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню