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. 重新部署项目

🎓 学习资源

相关推荐
用户938515635076 小时前
从零在浏览器里跑 DeepSeek-R1:WebGPU + Transformer.js 全链路实战
前端·设计模式·typescript
CodeSheep6 小时前
稚晖君公司人事大变动,来了!
前端·后端·程序员
鱼樱前端6 小时前
用 AI 做内容变收入
前端·人工智能·ai编程
浮生望7 小时前
React + TypeScript 组件设计进阶:从类型约束到无状态组件的三次进化
前端
90后的晨仔7 小时前
Mac 开发 uni-app 终极方案:让安卓模拟器彻底脱离 Android Studio 独立运行
前端·vue.js
90后的晨仔7 小时前
别再搞混了!uni-app 中 node_modules 和 uni_modules 到底是什么关系?
前端
kyriewen8 小时前
面试官问"这段逻辑为什么这样写"——我才发现,这半年我写的代码,我自己都解释不了
前端·javascript·面试
谢小飞8 小时前
大文件上传很难?学会这招,GB文件秒传不是梦
前端·node.js
程序员黑豆9 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
To_OC9 小时前
别只拿 useRef 绑 DOM 了,搭配 Web Worker 解决页面卡顿才是真的香
前端·react.js·dom