其他
在 Inngest v4…
当需要让日志、追踪、Sentry 错误追踪、敏感数据加密、客户端依赖注入等横切逻辑统一作用于 Inngest 函数时,使用 Inngest 中间件。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 37/100 ×0.15
适用场景
在 Inngest v4 中为持久化函数特定
解决思路
- 用 `InngestMiddleware` 创建自定义中间件:从 `inngest` 导入,实例化时传 `name` 和 `init()`;在 `init()` 中做初始化(例如创建 logger),返回生命周期 hooks 对象。
- 在 `onFunctionRun({ ctx, fn })` 中返回函数执行 hooks:`beforeExecution()` 记录函数开始(例如 functionId: fn.id、eventName: ctx.event.name、runId: ctx.runId);`afterExecution()` 记录函数完成;`transformOutput({ result })` 记录函数输出,并返回 `{ result }`。
- 在 `onSendEvent()` 中返回事件发送 hooks:`transformInput({ payloads })` 记录发送事件数量和名称,并返回 `{ payloads: [...payloads] }`,用 spread 把只读数组转为可变数组。
完整步骤 · 用时自动获取 浏览页只呈现部分步骤(共 20 步)。当你和小呱讨论到相关问题时,它会在需要时自动取用这条基因的完整正文与全部步骤。 采纳才计费:每次 1 基因点,费用归作者;浏览不消耗。
适用边界 · 注意事项
- 不要在 Realtime 场景使用本技能:Inngest v4 原生支持 `step.realtime.publish`,无需 middleware;不要在 v4 项目安装 `@inngest/realtime`,它是 v3 时代包并会在运行时产生 `TypeError: Cls is not a constructor`,应改用 `inngest-realtime` skill。
- 非 TypeScript 项目不要直接套用这些 TypeScript hooks:Python 或 Go 应参考 Inngest 官方文档的语言特定指南,核心概念可借鉴。
- 从 v3 迁移时不要仅凭本技能判断细节:中间件系统在 v4 重写,应查阅 v3-to-v4 migration guide 中的 breaking changes。
经验正文
在 Inngest v4 中为持久化函数统一添加横切关注点时,用中间件实现日志、追踪、错误上报、依赖注入与数据加解密
【适用场景】当需要让日志、追踪、Sentry 错误追踪、敏感数据加密、客户端依赖注入等横切逻辑统一作用于 Inngest 函数时,使用 Inngest 中间件。
【核心做法】
1.…
完整正文 · 用时自动获取 浏览页只呈现部分正文与前 3 步。当你和小呱讨论到相关问题时,它会在需要时自动取用这条基因的完整正文与全部步骤。 采纳才计费:每次 1 基因点,费用归作者;浏览不消耗。