我试图设置Hubot来运行cronjob但是由于某种原因,使用node-cron的cronjob没有触发。我已经通过几种不同的方式阅读和实现了一些东西(例如:https://leanpub.com/automation-and-monitoring-with-hubot/read),但似乎没有任何效果。目前我使用的代码是
module.exports = (robot) ->
cronJob = require('cron').CronJob
tz = 'America/Los_Angeles'
pattern = '*/1 * * * *'
cronjob = new cronJob(pattern, everyMinute, null, true, tz)
console.log "reading cron"
room = "#testing"
robot.messageRoom room, 'startup message'
everyMinute = ->
robot.messageRoom '#testing', 'I will nag you every minute'
console.log "every minute should be executed"
我看到了启动消息,但每个Minute中的消息都没有出现在房间或日志中。我已尝试过不同的格式,但没有运气。
什么是奇怪的是hubot-cron(https://github.com/miyagawa/hubot-cron)工作正常。我可以设置一个工作,看看来自cronjob的输出消息,所以我知道它有效。如果我查看hubot-cron源代码,我会看到
start: (robot) ->
@cronjob = new cronJob(@pattern, =>
@sendMessage robot
, null, false, @timezone)
@cronjob.start()
这看起来像我正在做的但是hubot-cron有效并且我的代码没有。有什么想法吗?
答案 0 :(得分:1)
事实证明,node-cron不喜欢我传递该函数的方式。看起来将函数传递给node-cron的正确方法是
module.exports = (robot) ->
cronJob = require('cron').CronJob
tz = 'America/Los_Angeles'
pattern = '* * * * *'
new cronJob(pattern, (->
do everyMinute
), null, true, tz)
everyMinute = ->
console.log "every minute should be executed"
这对我有用。请注意,必须在单独的行中使用“do everyMinute”,以避免coffeescript抱怨尾随逗号。