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

Supabase Edge Function报错:await操作数需为有效Promise或无then成员

解决Supabase Edge Function中的deno-ts(1320)错误

错误核心原因

deno-ts(1320)的本质问题是你await的对象并非标准Promise:Supabase JS v2及以上版本采用惰性查询设计,调用insert()仅生成查询构建器对象(虽带有then方法,但不符合Deno类型检查对Promise的严格要求),不会直接触发数据库请求。

直接解决方案

在insert()方法后追加.execute(),将查询构建器转换为可正常await的Promise,同时别忘了解构出你后续代码中用到但未定义的data:

const { error: insertError, data } = await supabase.from('Users').insert([{ email, password, first_name, last_name, username }]).execute();

修正后的完整代码

import { createClient } from "https://cdn.skypack.dev/@supabase/supabase-js@2";

const supabase = createClient('https://mylink.supabase.co', 'mykey')

Deno.serve(async (req) => {
  const { email, password, first_name, last_name, username } = await req.json()

  // 新增.execute()并解构出data
  const { error: insertError, data } = await supabase.from('Users').insert([{ email, password, first_name, last_name, username }]).execute()

  if (insertError) {
    return new Response(JSON.stringify({ error: insertError.message }), { 
      status: 400,
      headers: { 'Content-Type': 'application/json' } 
    })
  } else {
    console.log('Inserted data:', data);
    return new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json' } })
  }
})

额外注意事项

  • 建议在CDN导入链接中明确指定Supabase JS v2版本(如@2),避免版本兼容问题;
  • 若Edge Function需要处理Row Level Security或执行高权限操作,应使用服务角色密钥而非公开密钥初始化客户端。

内容的提问来源于stack exchange,提问作者John Solly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:22:42