找不到Heroku调度程序命令

lb3vh1jj  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(49)

我在heroku有一个node js项目,它工作得很好。我想做一个在调度器上运行的特定函数(每个星期天和星期三)问题是:我使用heroku调度器并设置命令Node Lottery.js只是为了确保在我的终端中它的工作所以问题只与heroku调度器有关
编辑:我现在向你展示的日志从heroku它看起来像调度程序不工作有时它意味着在10点它不会启动我的文件,但有时它确实启动文件我认为这是因为我有一个动态与睡眠时间,所以也许目前heroku项目是在睡眠,它不会启动它,因为应该是我知道当我运行应用程序,并使用它在9点调度工作,所以也许它,因为当heroku项目是活跃的,不睡觉,他可以运行这个命令,也许在第一行的代码的文件,我应该运行任何获取heroku服务器唤醒他,然后它会运行应该是?

const LotteryModel = require("./models/LotteryModel");
const mongoose = require("mongoose");
require("dotenv").config();
mongoose.set("strictQuery", false);
mongoose.connect(process.env.MONGODB_URI);
const currentDate = () => {
  const date = new Date();
  const day = date.getDate();
  const month = date.getMonth() + 1;
  const year = date.getFullYear();
  return `${day}-${month}-${year}`;
};

const createNumbers = () => {
  let tempArr = [];
  let randomNumber;
  let specialNum = { number: Math.floor(Math.random() * 7) + 1, special: true };
  if (specialNum.number === 0) specialNum = { number: Math.floor(Math.random() * 7) + 1, special: true };
  for (let i = 0; i < 6; i++) {
    let add = true;
    randomNumber = { number: Math.floor(Math.random() * 36) + 1, special: false };

    for (let y = 0; y < 36; y++) {
      if (tempArr[y]?.number == randomNumber.number) {
        add = false;
      }
    }
    if (add) {
      tempArr.push(randomNumber);
    } else {
      i--;
    }
  }
  tempArr.push(specialNum);
  return tempArr;
};

const createTime = async () => {
  console.log("starting function");
  const currentTime = currentDate();
  const currentDay = new Date().getDay();
  const findLottery = await LotteryModel.findOne({ lotteryDate: currentTime });
  if (findLottery) return;
  if (currentDay === 0 || currentDay === 3) {
    console.log("starting day");
    const allLottery = await LotteryModel.find({});
    const lotteryNumbers = { lotteryNumbers: createNumbers(), lotteryDate: currentTime, id: allLottery.length };
    console.log(lotteryNumbers)
     console.log("middle");
    await LotteryModel.create(lotteryNumbers);
    console.log('finish create numbers')
  }
};
createTime();

字符串


的数据



v7pvogib

v7pvogib1#

调度程序在可以访问应用程序代码的one-off dyno上运行命令。您不需要在该环境中使用heroku run(正如您所发现的,Heroku CLI在那里不可用)。
而不是

heroku run node createLottery.js

字符串
使用

node createLottery.js

相关问题