私はLater.jsを使用setInterval
しており、スケジュールに使用しようとしています。私は非常に奇妙な振る舞いをします。スケジュールを少し前に設定するとうまくいきます。しかし、本当に欲しい時間を使っても、その時間帯には何も起こりません。何が悪いのかわかりません。
"use strict";
var settings = require('./settings');
var later = require('later');
later.date.localTime();
console.log("ProjectTwo started.");
createEvents();
function createEvents() {
settings.eventSettings.forEach(function(setting) {
if (typeof setting.schedule === 'object' ) {
var schedule = { schedules: [ setting.schedule ] };
later.setInterval(function() { switchLights(setting) } , schedule);
console.log(s.next(2));
}
});
}
function switchLights(setting) {
console.log((new Date()).toLocaleString() + " " + setting.name);
}
//switchLights(settings.eventSettings[0]);
そして設定:
"use strict";
var settings = {
eventSettings: [
{
id: 1,
schedule: { h: [2], m: [0]},
//schedule: { h: [16], m: [16]},
name: "One",
},
{
id: 2,
schedule: { h: [6], m: [0]},
//schedule: { h: [16], m: [9]},
condition: "if_dark",
name: "Two",
},
{
id: 3,
schedule: { h: [8], m: [30]},
//schedule: { h: [16], m: [10]},
name: "Three",
}
]
};
module.exports = settings;
コメントアウトされたschedule
行を切り替えると、うまくいきます!しかし、コメントアウトされていない行 (本当に必要な行) を使用すると、午前 2 時、午前 6 時、午前 8 時 30 分には何も起こりません。
console.log(s.next(2)) の出力を見ると、それらは常に正しいです。しかし、それらがさらに少し先の未来である場合、その時点では何も起こりません。
編集
さらにテストを行ったところ、アプリの実行方法に問題があったことが判明しました。Raspberry Pi で NOHUP を使用して実行します (他のケースでは動作しました)。何らかの理由で動作しません。次に、pm2を使用して同じコードを実行してみました。それは完璧に機能しました!