我每六个小时就有一个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模式。
如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
方法。