You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建Hasura一次性定时事件时遭遇'resource does not exist'错误求助

错误原因排查与解决办法

核心错误分析

你遇到的not-found + resource does not exist错误,本质是请求的资源路径不存在,结合你的代码和Hasura的API规范,主要有以下几个可能的原因:

1. 请求URL错误

Hasura的定时事件创建接口并非/v1/graphql/query(这个是GraphQL数据查询/修改的端点),定时事件属于元数据操作,正确的API端点是/v1/events/schedule。

2. 请求数据处理不当

你的代码中使用了JSON.stringify(schedule_event),但Axios在发送POST请求时,若传入对象作为data,会自动将其序列化为JSON并设置正确的Content-Type: application/json头,手动序列化反而可能导致格式识别问题。

3. 定时事件结构不符合要求

如果schedule_event对象缺少必填字段(如trigger_name、schedule、webhook),也可能导致接口无法识别请求,但优先排查URL问题。


解决步骤

1. 修正请求URL

将请求地址改为Hasura定时事件的正确端点:

const add_event = await axios("http://localhost:8080/v1/events/schedule", {
    method: "POST",
    data: schedule_event, // 直接传对象,无需JSON.stringify
    headers: {
      "x-hasura-admin-secret": process.env.HASURA_ADMIN_SECRET,
    },
});

2. 确保schedule_event结构正确

一个合法的定时事件请求体示例如下:

const schedule_event = {
  trigger_name: "weekly_invoice_sync", // 唯一触发器名称
  schedule: "0 0 * * 0", // Cron表达式(每周日凌晨执行)
  payload: { tenant_id: "abc123" }, // 传递给webhook的参数
  webhook: "https://your-service.com/process-invoice", // 事件触发时调用的接口
  headers: { "Content-Type": "application/json" }, // 可选,自定义请求头
  retry_conf: { // 可选,重试配置
    num_retries: 3,
    retry_interval_seconds: 60
  }
};

3. 验证Hasura基础配置

  • 确认Hasura控制台的Events功能已启用(默认启用,若被禁用需在Settings中开启)。
  • 检查x-hasura-admin-secret是否与Hasura实例配置的一致。

内容的提问来源于stack exchange,提问作者Felix Atlas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:03:15