我一直在尝试使用 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.')
}
以下是我已采取的步骤和已检查的内容:
我想知道 Vercel 是否存在一些兼容性问题,或者是否存在我缺少的 Next.js 或 node-cron 特有的内容。如果有人有在 Vercel 上的 Next.js 应用程序中安排作业的经验,我将非常感谢任何解决此问题的见解或建议。
提前感谢您的帮助!如果需要任何其他信息,请告诉我。
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