Nextjs+Supabase

📝 Next.js + Supabase

🚀 快速开始

前置条件:先创建一个Nextjs应用

bash 复制代码
npx create-next-app@latest

1. 设置 Supabase

1.1 创建 Supabase 项目
  1. 访问 https://supabase.com
  2. 登录并创建新项目
  3. 等待项目初始化完成(约 1-2 分钟)
1.2 创建数据库表
  1. 在 Supabase 控制台,点击 "SQL Editor"
  2. 点击 "New query"

直接粘贴下面代码运行:

sql 复制代码
create table todos (
  id bigint generated by default as identity primary key,
  title text not null,
  completed boolean default false,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

alter table todos enable row level security;

create policy "允许所有操作"
  on todos
  for all
  using (true)
  with check (true);

2. 配置环境变量

2.1 获取 Supabase 凭证
  1. 在 Supabase 控制台,点击 Settings (齿轮图标)
  2. 点击 API 标签
  3. 复制:
    • Project URL

    • anon public key

2.2 创建 .env.local 文件(这个仅本地使用,vercel部署需要把环境变量导进去)

在项目根目录创建 .env.local 文件:

bash 复制代码
NEXT_PUBLIC_SUPABASE_URL=你的_项目_URL,见上面2.1图
NEXT_PUBLIC_SUPABASE_ANON_KEY=你的_anon_key,见上面2.1图

📌 重要: 替换为你自己的值!

4. 启动开发服务器

bash 复制代码
npm run dev

🔧 核心代码说明

连接 Supabase (utils/supabase.js)

javascript 复制代码
import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY
)

export default supabase

读取数据

javascript 复制代码
const { data, error } = await supabase
  .from('todos')
  .select('*')
  .order('created_at', { ascending: false })

插入数据

javascript 复制代码
const { data, error } = await supabase
  .from('todos')
  .insert([{ title: '新的 todo', completed: false }])

更新数据

javascript 复制代码
const { data, error } = await supabase
  .from('todos')
  .update({ completed: true })
  .eq('id', todoId)

删除数据

javascript 复制代码
const { data, error } = await supabase
  .from('todos')
  .delete()
  .eq('id', todoId)

🚀 部署到 Vercel

点击vercel官网

1. 推送代码到 GitHub

bash 复制代码
git add .
git commit -m "Add Supabase integration"
git push

2.新建部署项目

2. 在 Vercel 添加环境变量

  1. 进入你的 Vercel 项目
  2. SettingsEnvironment Variables
  3. 添加:
    • NEXT_PUBLIC_SUPABASE_URL = 你的 Supabase URL
    • NEXT_PUBLIC_SUPABASE_ANON_KEY = 你的 Supabase Anon Key
  4. Save

3. 点击部署

Vercel 就会开始部署啦,后续只要往github的你这个项目推送代码,vercel会自动检测,自动更新,自动部署

部署过程可能会有的问题

检查nextjs版本和react版本,因为有一些版本因为2025年12月份重大安全漏洞问题,vercel不允许部署某些不安全的版本,

请保证你的项目next和react至少大于等于下面的版本

json 复制代码
    "next": "16.0.7",
    "react": "19.2.1",
    "react-dom": "19.2.1"

❓ 部署后数据库常见问题

页面显示 "Failed to fetch" 错误

解决方法:

  1. 检查 .env.local 文件是否存在且配置正确
  2. supabase如果检查到7天内,你的数据库没有任何操作,就会给你关了,,请去supabase重新激活

看到 "relation does not exist" 错误

解决方法 :

运行 SQL_COMMANDS.sql 中的 SQL 命令创建表

Vercel 部署后不工作

解决方法:

  1. 确认在 Vercel 项目设置中添加了环境变量
  2. 重新部署项目

🎓 学习资源

相关推荐
张拭心4 小时前
Cursor 又偷偷更新,这个功能太实用:Visual Editor for Cursor Browser
前端·人工智能
I'm Jie4 小时前
深入了解 Vue 3 组件间通信机制
前端·javascript·vue.js
用户90443816324605 小时前
90%前端都踩过的JS内存黑洞:从《你不知道的JavaScript》解锁底层逻辑与避坑指南
前端·javascript·面试
CodeCraft Studio6 小时前
文档开发组件Aspose 25.12全新发布:多模块更新,继续强化文档、图像与演示处理能力
前端·.net·ppt·aspose·文档转换·word文档开发·文档开发api
PPPPickup6 小时前
easychat项目复盘---获取联系人列表,联系人详细,删除拉黑联系人
java·前端·javascript
老前端的功夫6 小时前
前端高可靠架构:医疗级Web应用的实时通信设计与实践
前端·javascript·vue.js·ubuntu·架构·前端框架
前端大卫7 小时前
【重磅福利】学生认证可免费领取 Gemini 3 Pro 一年
前端·人工智能
孜燃7 小时前
Flutter APP跳转Flutter APP 携带参数
前端·flutter
脾气有点小暴7 小时前
前端页面跳转的核心区别与实战指南
开发语言·前端·javascript
lxh01137 小时前
最长递增子序列
前端·数据结构·算法