SuperAPI AI 工具集

inngest-middleware

通用与其它

查看项目

更新于 10-16 06:20

技能介绍

用途:为 Inngest 持久化函数添加横切关注点,如结构化日志与追踪、Sentry 错误跟踪、依赖注入、数据加解密与转换、认证校验等。中间件可注册在客户端级(影响所有函数)或函数级(影响特定函数),执行顺序为先客户端后函数,按声明顺序运行。

主要能力:通过 InngestMiddleware 的 init() 返回生命周期钩子,如 onFunctionRun 下的 beforeExecution、afterExecution、transformOutput,以及 onSendEvent 下的 transformInput,可在函数执行与事件发送等环节插入逻辑。内置 dependencyInjectionMiddleware 可共享 OpenAI、Prisma 等客户端实例。官方独立包包括 @inngest/middleware-encryption(加密步骤数据、函数输出与事件 data.encrypted,支持 fallbackDecryptionKeys 轮换密钥)和 @inngest/middleware-sentry(捕获异常、添加追踪与上下文,需 @sentry/*@>=8.0.0)。

使用方式:安装对应包后,在 new Inngest({ middleware: [...] }) 中注册;自定义中间件用 new InngestMiddleware({ name, init() { return { onFunctionRun(...) {...} } } })。示例命令:npm install @inngest/middleware-encryption、npm install @inngest/middleware-sentry。

适用场景:可观测性、依赖注入、数据转换、错误处理、认证、指标与性能追踪、重试、熔断、功能开关等。

限制:技能聚焦 TypeScript,Python 或 Go 需参考 Inngest 官方文档;中间件系统在 v4 大幅重写,钩子反映 v4 API,从 v3 迁移需查阅迁移指南。实时功能应使用 inngest-realtime 技能,v4 原生支持 step.realtime.publish,无需中间件,且不要在 v4 项目安装 @inngest/realtime,否则运行时报 TypeError: Cls is not a constructor。中间件应保持单一职责、优雅处理错误、注意性能并充分测试。测试可用 createMockContext、createMockFunction 等工具。