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

🎓 学习资源

相关推荐
小笔学长16 分钟前
Webpack 配置优化:提高打包速度与质量
前端·项目实战·前端开发·webpack优化·打包性能优化
优爱蛋白24 分钟前
SCF His Tag 重组蛋白:c-Kit受体信号研究与干细胞培养应用的关键试剂
前端·人工智能·健康医疗
C_心欲无痕30 分钟前
react - Suspense异步加载组件
前端·react.js·前端框架
JosieBook38 分钟前
【Vue】05 Vue技术——Vue 数据绑定的两种方式:单向绑定、双向绑定
前端·javascript·vue.js
想学后端的前端工程师1 小时前
【浏览器工作原理与性能优化指南:深入理解Web性能】
前端·性能优化
程序员爱钓鱼1 小时前
Node.js 编程实战:错误处理与安全防护
前端·后端·node.js
Geoffwo1 小时前
Electron 打包后 exe 对应的 asar 解压 / 打包完整流程
前端·javascript·electron
柒@宝儿姐1 小时前
vue3中使用element-plus的el-scrollbar实现自动滚动(横向/纵横滚动)
前端·javascript·vue.js
程序员爱钓鱼1 小时前
Node.js 编程实战:模板引擎与静态资源
前端·后端·node.js
Geoffwo1 小时前
Electron打包的软件如何使用浏览器插件
前端·javascript·electron