故障排查

工具调用返回错误

  • 确认jsonrpc:"2.0"字段必须存在
  • 确认工具名在24个注册名中
  • 参数Schema:必填字段是否缺失/类型是否正确
  • wrangler tail查看实时错误日志

PNG渲染失败或图片空白

  • 确认@resvg/resvg-wasm已正确安装(npm install无误)
  • CJK文字不显示→确认字体文件已上传到Cloudflare KV
  • 图片完全空白→检查表达式语法(sin(x)非sin x,x^2非x**2,log(x)非ln(x))
  • 数学符号不显示→使用pi而非π,函数必须用括号包裹参数

短链接失效或无法打开

  • 30天TTL过期是正常行为——短链接设计为临时性的
  • 使用/plot或/png端点直接渲染,将完整参数保留在URL中用于长期引用
  • 确认Token是完整的8个字符(字母+数字)

部署后Worker不工作

  • 确认npx wrangler login已完成Cloudflare账号OAuth认证
  • 确认wrangler.toml中kv_namespaces的id与Cloudflare Dashboard中创建的KV命名空间ID完全一致
  • KV绑定错误→在Dashboard的Workers & Pages→KV中检查命名空间是否存在

性能优化建议

  • 使用plot_png_link获取PNG图片URL而非plot_json中的base64数据(URL比base64小约100倍)
  • 批量渲染使用plot_multi_images(一次请求最多8个任务,复用WASM实例和字体缓存)
  • SVG渲染比PNG快约3倍——如果图表不含CJK文字优先选择SVG格式
  • 默认采样点数1000对绝大多数场景已足够,调高到5000对视觉改善微乎其微但渲染时间成倍增加
  • 分享图表使用短链接(/s/{token})而非一长串参数URL

CJK字体相关问题

  • 本地开发需要手动下载.ttf字体文件(如从Google Fonts下载Noto Sans SC)
  • 生产环境字体存储于Cloudflare KV,通过opentype.js按需将字形转换为SVG路径
  • 如果没有字体文件:英文和数字正常渲染,中文/日文/韩文显示为方块或空白

表达式解析常见错误

  • expr-eval不支持Python语法——x**2应为x^2,ln(x)应为log(x)
  • 三角函数必须用括号:sin(x)而非sin x
  • 隐式乘法不支持:2x应写成2*x
  • 常数使用英文字母:pi而非π,e而非自然常数符号

关于双版本号

package.json:0.2.0(npm发布版本)。SERVER_VERSION:0.4.14(constants.ts,health工具和initialize响应中报告)。两者不一致是故意设计——分别追踪npm包发布周期和Worker部署迭代次数。不要尝试对齐它们。