AI & Agent Dev Bug Sandbox logo
AI & Agent Dev Bug Sandbox
Back to Radar

Edge Functions Test Panel Hides Real Error In Self-Hosted Due To Response Key Mismatch

自托管Supabase的Edge Functions测试面板始终返回通用错误消息,因为Studio期望error键,但自托管worker返回message键。修复将worker错误响应键从msg改为error,与平台对齐。

mediumConfidence 92%Node.js

Origin Analysis

Studio的test.ts从响应体提取errorBody?.error,但自托管Kong前置边缘运行时返回错误形状为{"message":"..."},导致键不匹配,回退到硬编码通用错误。
1. 自托管Supabase (supabase start) 并部署一个函数;2. 在Studio中进入Edge Functions -> 函数 -> Test,发送会失败的请求;3. 观察响应始终显示通用错误消息。

Fixing Code Block

在docker/volumes/functions/main/index.ts中,将错误响应中的msg键改为error键。示例: const errorResponse = (error: Error) => new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { 'Content-Type': 'application/json' } }); // 替换所有使用msg键返回错误的地方,确保与平台响应形状一致。
通过将worker返回的错误键从msg改为error,使Studio的errorBody?.error能够正确提取错误消息,从而显示真实原因,避免通用回退。同时保持与平台响应形状一致,减少后续维护成本。

Edge Case Audit

修复后,如果下游消费者仍期望msg键,可能导致兼容性问题。需确保所有生成错误响应的路径(包括CLI、文档示例、中间件)都统一更新。对于网关层错误和非JSON响应,仍无法提取具体信息,测试面板仍会显示通用错误。升级时需确保Studio和worker版本匹配,避免键不匹配再次出现。建议在部署前进行回归测试,并保留回滚方案。

Ecosystem Topology