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

如何在Supabase边缘函数中正确使用database.types.ts?

解决Supabase边缘函数找不到database.types.ts的问题

因为Supabase边缘函数运行时的文件上下文被限制在对应函数的目录(/supabase/functions/api/)内,根目录的文件默认不会被加载,所以跨目录导入会失败。以下是几种实用的解决方法:

方法一:手动复制类型文件到函数目录

  1. 将根目录的database.types.ts复制到/supabase/functions/api/目录下
  2. 修改函数中的导入路径:
import { createClient } from "jsr:@supabase/supabase-js@2.45.6";
import { Database } from "./database.types.ts";

export function supabaseClient() {
  const url = Deno.env.get('SUPABASE_URL');
  const serviceRoleKey = Deno.env.get('SUPABASE_SERVICE_ROLE_KEY');
  return createClient<Database>(url!, serviceRoleKey!);
}

优点:操作简单,无需额外配置;缺点:每次更新数据库 schema 生成新的类型文件后,需要手动同步复制。

方法二:修改类型生成命令,直接输出到函数目录

每次生成类型时,指定输出路径为函数目录,避免手动复制:

supabase gen types typescript --project-id 你的项目ID > supabase/functions/api/database.types.ts

之后更新类型只需重新执行该命令即可,自动覆盖函数目录下的文件。

方法三:通过Deno导入映射配置路径(进阶)

  1. 在根目录创建import_map.json文件,添加类型文件的映射:
{
  "imports": {
    "@/database.types": "../database.types.ts"
  }
}
  1. 在函数目录的deno.json(如果没有则创建)中指定导入映射:
{
  "importMap": "../../import_map.json"
}
  1. 修改函数中的导入语句:
import { Database } from "@/database.types";

注意:使用此方法时,需要确保Supabase CLI在运行函数时能识别导入映射,部分场景下可能需要在启动命令中添加--import-map参数:

supabase functions serve api --import-map ../../import_map.json

优点:无需复制文件,类型文件统一管理;缺点:配置相对复杂,需要维护导入映射文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:12:09