每隔6小时的cron模式不适用于Nodejs cron

问题描述 投票:1回答:1

我每六个小时就有一个cron模式0 0 0/6 ? * *。我使用Nodejs cron执行cron作业,下面是我的代码:

var CronJob = require('cron').CronJob;
  new CronJob('0 0 0/6 ? * *', function() {
          console.log(new Date(), 'Every 6 hours');
          try {
              // task to be executed
          } catch (e) {
              console.log(e);
          }
      }, function() {},
      true
  ).start();

我在程序启动期间遇到此异常:

"stack": [
    "Error: Field (?) cannot be parsed",
    "    at Object._parseField (/home/ajit/git/test/BackEnd/node_modules/cron/lib/cron.js:344:11)",
    "    at Object._parse (/home/ajit/git/test/BackEnd/node_modules/cron/lib/cron.js:308:9)",

我在这个网站检查了这个模式:http://www.cronmaker.com/,它说我的cron是有效的。我在互联网上搜索过,如果没有?,我无法获得有效的6位数cron模式。

javascript node.js cron cron-task
1个回答
1
投票

Cron package documentation所述,模式基于this specification。你不能在模式中使用?

只需用?替换*,就像0之前的/6一样:

var CronJob = require('cron').CronJob;
  new CronJob('0 0 */6 * * *', function() {
          console.log(new Date(), 'Every 6 hours');
          try {
              // task to be executed
          } catch (e) {
              console.log(e);
          }
      }, function() {},
      true
  );

编辑

再次基于documentation,似乎true标志作为第3个参数立即开始工作,所以你不必调用start方法。

© www.soinside.com 2019 - 2024. All rights reserved.