找不到Heroku调度程序命令

lb3vh1jj  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(169)

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

  1. const LotteryModel = require("./models/LotteryModel");
  2. const mongoose = require("mongoose");
  3. require("dotenv").config();
  4. mongoose.set("strictQuery", false);
  5. mongoose.connect(process.env.MONGODB_URI);
  6. const currentDate = () => {
  7. const date = new Date();
  8. const day = date.getDate();
  9. const month = date.getMonth() + 1;
  10. const year = date.getFullYear();
  11. return `${day}-${month}-${year}`;
  12. };
  13. const createNumbers = () => {
  14. let tempArr = [];
  15. let randomNumber;
  16. let specialNum = { number: Math.floor(Math.random() * 7) + 1, special: true };
  17. if (specialNum.number === 0) specialNum = { number: Math.floor(Math.random() * 7) + 1, special: true };
  18. for (let i = 0; i < 6; i++) {
  19. let add = true;
  20. randomNumber = { number: Math.floor(Math.random() * 36) + 1, special: false };
  21. for (let y = 0; y < 36; y++) {
  22. if (tempArr[y]?.number == randomNumber.number) {
  23. add = false;
  24. }
  25. }
  26. if (add) {
  27. tempArr.push(randomNumber);
  28. } else {
  29. i--;
  30. }
  31. }
  32. tempArr.push(specialNum);
  33. return tempArr;
  34. };
  35. const createTime = async () => {
  36. console.log("starting function");
  37. const currentTime = currentDate();
  38. const currentDay = new Date().getDay();
  39. const findLottery = await LotteryModel.findOne({ lotteryDate: currentTime });
  40. if (findLottery) return;
  41. if (currentDay === 0 || currentDay === 3) {
  42. console.log("starting day");
  43. const allLottery = await LotteryModel.find({});
  44. const lotteryNumbers = { lotteryNumbers: createNumbers(), lotteryDate: currentTime, id: allLottery.length };
  45. console.log(lotteryNumbers)
  46. console.log("middle");
  47. await LotteryModel.create(lotteryNumbers);
  48. console.log('finish create numbers')
  49. }
  50. };
  51. createTime();

字符串


的数据



v7pvogib

v7pvogib1#

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

  1. heroku run node createLottery.js

字符串
使用

  1. node createLottery.js

相关问题