用途:在 TypeScript 项目中从零搭建 Inngest,用于持久执行、可重试的 Webhook 处理、崩溃后仍可恢复的后台任务与定时任务。仅聚焦 TypeScript,Python 或 Go 需参考官方语言文档。
前置条件:Node.js 18+(WebSocket 场景建议 22.4+)、TypeScript 项目、包管理器(npm、yarn、pnpm 或 bun)。
安装:npm install inngest(或 yarn add / pnpm add / bun add inngest)。
客户端:创建共享客户端文件,如 src/inngest/client.ts,用 new Inngest({ id: "my-app" }) 初始化,id 为必填的唯一连字符 slug。可用 eventType() 配合 zod 定义带类型的事件,并将其作为函数触发器或 inngest.send() 的入参。
关键配置:id(必填)、eventKey、env、isDev、signingKey、signingKeyFallback、baseUrl、logger、middleware。v4 默认 Cloud 模式,本地开发须设 INNGEST_DEV=1,否则 serve 端点返回 500;生产需设置 INNGEST_SIGNING_KEY。切勿在源码中硬编码密钥或 isDev: true。
连接模式:HTTP serve 端点适合无服务器平台与既有 API;Connect(WebSocket)适合 Kubernetes、Docker 等长驻进程,需 Node.js 22.4+ 等支持并注意 v4 的工作线程隔离与 gatewayUrl 变更。
本地开发:使用 npx --ignore-scripts=false inngest-cli@latest dev,可按需加 -u 指定应用 URL、-p 指定端口或 --no-discovery 关闭自动发现;默认端口 8288,可用 inngest.json 做复杂配置。
限制与注意:端点路径建议统一为 /api/inngest 以自动发现;Express 需 express.json({ limit: "10mb" });改动应用 id 会在 Inngest 中新建应用;未提供收费与价格信息。