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

Node.js中使用Supabase报错:TypeError: supabase.from is not a function

解决Supabase TypeError: supabase.from is not a function 错误

问题根源

你在stripeTest函数所在文件中直接引入了@supabase/supabase-js库本身,而非使用config.js里通过createClient初始化好的Supabase客户端实例。未初始化的库对象不具备from方法,因此触发该错误。另外代码同时混用require(CommonJS)和import(ES模块),可能引发模块加载冲突。

解决方案

步骤1:统一模块导入方式

根据项目实际情况,选择一种模块规范并保持一致:

方案A:使用CommonJS规范

修改config.js为CommonJS格式:

const { createClient } = require('@supabase/supabase-js');

const supabaseUrl = process.env.APP_SUPABASE_URL;
const supabaseAnonKey = process.env.APP_SUPABASE_ANON_KEY;

const supabase = createClient(supabaseUrl, supabaseAnonKey);

module.exports = supabase;

然后在stripeTest所在文件中,导入config.js里的客户端实例:

// 导入初始化好的supabase客户端,而非直接导入库
const supabase = require('./config.js'); // 路径根据你的文件结构调整

const stripeTest = async(req, res) => {
  console.log('hellooo!!!!!');
 
  try {
    const {data: events} = await supabase
    .from('events')
    .select('id')

    console.log('events', events)
    
  } catch (error) {
    console.log('error ', error);
  }
}

方案B:使用ES模块规范

在项目根目录的package.json中添加配置:

{
  "type": "module"
}

然后修改stripeTest所在文件的导入方式:

// 导入config.js里的客户端实例
import supabase from './config.js'; // 路径根据你的文件结构调整

const stripeTest = async(req, res) => {
  console.log('hellooo!!!!!');
 
  try {
    const {data: events} = await supabase
    .from('events')
    .select('id')

    console.log('events', events)
    
  } catch (error) {
    console.log('error ', error);
  }
}

步骤2:验证环境变量

确保APP_SUPABASE_URL和APP_SUPABASE_ANON_KEY已正确配置并能被项目读取,可在config.js中添加日志验证:

console.log('Supabase URL:', supabaseUrl);
console.log('Supabase Anon Key:', supabaseAnonKey);

步骤3:更新Supabase库版本

安装最新稳定版的@supabase/supabase-js,避免旧版本API差异问题:

npm install @supabase/supabase-js@latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:35:35