我正在学习如何在 Vercel 上设置 cron,今天我们在 Heroku 上运行一些任务,我们想看看它们在这个平台上的执行情况。
我可以在使用情况报告中看到 cron 正在被触发,但是,我无法真正看到正在执行的代码。
但是,当我们部署更改时,它似乎起作用了。
图像显示 cron 按预期被触发。
我们还可以看到函数已经返回了数据,时间与上次部署时间一致。
https://dw-router.vercel.app/api/pricefeed
代码:
//import type { VercelRequest, VercelResponse } from '@vercel/node';
import type { NextRequest, NextResponse } from 'next/server';
import { PriceFeed } from '@/lib/wharfsession';
export const revalidate = 0;
// GET for App Router, handler for Page Router
export async function GET(req: NextRequest, res: NextResponse) {
console.log('---START---');
/*
const authHeader = req.headers.get['authorization'];
if (authHeader !== 'Bearer ${process.env.CRON_SECRET}') {
return res.json({ success: false });
}; */
if ( req.method === 'GET' ) {
try {
const result = await PriceFeed(); //session.transact({ action: transferAction });
//return res.status(201).json({ success: true, data: result });
return Response.json({ success: true, data: result, status: 201 });
} catch(err) {
//return res.status(400).json({ success: false, data: err });
return Response.json({ success: false, data: err, status: 401 });
};
} else {
return Request.arguments;
};
}
vercel.json:
{
"rewrites": [
{"source": "/(.*)", "destination": "/"}
],
"crons": [
{
"path": "/api/pricefeed",
"schedule": "*/5 * * * *"
}
]
}
我不明白的是 cron 如何调用 GET ?为什么 Vercel 不支持通用处理程序,而这正是他们在无服务器 API 路由示例中所提供的?
我确信我在某个地方错过了一些东西。我想做的就是运行代码,就好像它在 *nix cron 或 Node.js 中运行一样
尝试了 Vercel 的不同示例和社区成员的旧示例。
预计 cron 无需部署接口即可运行 Pricefeed() 函数。 该项目正在生产中。 我正在使用 Pro 计划。
package.json:
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@vercel/node": "^3.0.17",
"@wharfkit/antelope": "^1.0.7",
"@wharfkit/session": "^1.2.7",
"@wharfkit/signing-request": "^3.1.0",
"@wharfkit/wallet-plugin-privatekey": "^1.1.0",
"next": "^14.1.0",
"next-server": "^9.0.5",
"prettier": "^3.2.5",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"vercel": "^33.4.1"
},
"devDependencies": {
"@types/node": "^20.11.16",
"@types/react": "^18.2.55",
"typescript": "^5.3.3"
}
}
蒂亚
/F
我从头开始重新创建了该项目,现在一切正常。