在 Vercel 上部署的 Next.js 中使用 node-cron 调度作业不工作

问题描述 投票:0回答:1

我一直在尝试使用 node-cron 库在 Vercel 上部署的 Next.js 应用程序中安排后台作业,但遇到了计划作业未执行的问题。我已遵循文档和一些在线指南,但我仍然面临这个问题。

这是我正在使用的代码的简化版本:

// pages/api/scheduled-job.ts

import { NextApiRequest, NextApiResponse } from 'next'
import cron from 'node-cron'

export default function handler(req: NextApiRequest, res: NextApiResponse) {
  const schedule = '* * * * *' // Run every minute

  const job = () => {
    console.log('Scheduled job is running every minute...')
  }

  cron.schedule(schedule, job)

  res.status(200).send('Scheduled job has been set up.')
}

以下是我已采取的步骤和已检查的内容:

  • 我使用yarn add node-cron安装了node-cron包。
  • 我确认我对 Vercel 的部署包含最新的代码更改。
  • 我检查了 Vercel 仪表板日志,但没有与调度相关的错误消息。
  • 我在运行应用程序的控制台或终端中没有收到任何错误消息。
  • 我验证了我的环境支持长时间运行的进程和类似 cron 的调度。
  • 尽管执行了这些步骤,作业仍未执行。我还尝试简化作业逻辑,每分钟只记录一条消息,但即使这样也行不通。

我想知道 Vercel 是否存在一些兼容性问题,或者是否存在我缺少的 Next.js 或 node-cron 特有的内容。如果有人有在 Vercel 上的 Next.js 应用程序中安排作业的经验,我将非常感谢任何解决此问题的见解或建议。

提前感谢您的帮助!如果需要任何其他信息,请告诉我。

next.js cron vercel
1个回答
0
投票

Next.js 内置了对 Vercel 上 cron 的支持。

您不需要使用

node-cron
,它也不适用于 Vercel。

Vercel 支持无服务器和边缘功能的 cron 作业。可以通过 vercel.json 或构建输出 API 添加 Cron 作业。

https://vercel.com/docs/cron-jobs

所以你只需要在根目录下有一个

vercel.json
文件,列出时间表和要命中的 api 路径。

供参考:https://github.com/vercel/examples/blob/main/solutions/cron/vercel.json

© www.soinside.com 2019 - 2024. All rights reserved.