如题,本系列将带领大家使用vercel和next.js相关技术快速构建一个多用户体系的全栈基建项目并部署生产环境,史称--次世代全干工程师养成计划
相关技术
1.next-js 使用react构建全栈应用的框架
2.next-auth 针对 Next.js 应用程序的一个完整的开源身份验证解决方案
3.prisma 次世代 Node.js 和 TypeScript ORM
4.vercel 为开发人员提供构建更快、更个性化 Web 的框架、工作流和基础设施。
5.vercel-postgres 无服务器的 SQL 数据库,旨在与 Vercel 函数和前端框架集成。
6.tailwindcss 一个效用优先的 CSS 框架
开始
注册并登录Vercel平台
由于我们需要使用github来托管项目代码,所以这里建议使用github授权登录
创建项目
vercel已经为我们准备了许多应用场景比较成熟的项目模板,我们只需要选择符合自己需求的模板即可
搜索auth相关模板并选择其一
注⚠️:其实这里的大多数模板我都有所尝试,有许多需要进行一些琐碎的配置,因为next和next-auth、prisma版本不一致的问题踩了许多坑,对未上手的新用户并不友好,并且很多偏向业务的代码并不适合作为demo讲解,此模板仅包含用户体系功能且仅需进行很少的配置即可开发部署,所以选择它。非常推荐你在阅读完本文后去体验学习一下其他模板,都很不错
点击deploy
按钮开始进行部署
创建仓库
输入Repository Name
或使用默认值,点击Create
按钮进行创建
此操作将会在你的github下创建一个新的仓库,仓库名就是你的输入值
创建并连接数据库
接下来我们点击Add
新建数据库
点击Accept
接受协议条款
点击Create
完成创建
选择数据库可用环境并点击Connect
连接数据库
配置密钥
接下来我们为项目配置NEXTAUTH_SECRET
,点击Lean More
在弹出页面生成加密串,复制并填入NEXTAUTH_SECRET
部署
最后我们点击Deploy
进行部署并等待其完成即可
恭喜你,发布成功!🎊
我们来简单测试一下,点击Protected Page
进入注册/登录流程
当你完成注册并登录后
...
你.被.骗.了.
至此我们已成功创建并发布了自己的网站,接下来开始为本地开发做准备
本地开发
⚠️注:要求node版本为16以上,如果你低于此版本,可以使用n来管理和切换你的node版本
首先拉取我们的远程仓库并装包
git clone 你的仓库地址
cd 你的仓库名
npm install
全局安装vercel
连接vercel平台上我们之前创建的项目
npm i -g vercel
npm install @vercel/postgres
vercel link
如果连接成功你将看到如下信息
拉取环境变量
vercel env pull .env.development.local
此时你会发现项目中多了一个.env.development.local
的环境变量文件,这是我们在创建项目的时候生成的,而下面的那个.env.example
是模板作者给你的示例文件
删除.env.example
并将.env.development.local
重命名为.env
启动本地数据库
npx prisma studio
如果你的http://localhost:5555 没有被占用的话,你将看到如下页面,表示数据库启动成功
选择User
这个Model
,你可以看到之前在生产环境测试时你注册的账号
启动本地项目
npm run dev
此时你的本地服务已经在http://localhost:3000 运行了
如果你遇到如下报错
这是因为unstable_getServerSession
已被弃用,将./components/auth-status.tsx
中的unstable_getServerSession
替换为getServerSession
即可
import { getServerSession } from "next-auth/next";
export default async function AuthStatus() {
const session = await getServerSession();
return (
<div className="absolute top-5 w-full flex justify-center items-center">
{session && (
<p className="text-stone-200 text-sm">
Signed in as {session.user?.email}
</p>
)}
</div>
);
}
设置本地环境变量
在.env
文件中添加如下变量
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="你在vercel平台配置的NEXTAUTH_SECRET"
NEXTAUTH_URL
用于本地开发时的用户校验流程,如果不配置,则本地环境的注册/登录流程无法走通,但生产环境不受此影响
NEXTAUTH_SECRET
用于加密传输数据,需要与创建项目时的配置一致,你可以在下图位置查看之前的环境变量配置
自动化部署
在创建项目时vercel已经为我们集成了自动化部署的pipeline,我们只需要提交代码,其他的活儿交给vercel就行
git add .
git commit -m 'init'
git push
可以看到提交代码后,在vercel的dashboard
中你的项目已经开始进行打包部署
如果部署失败,你可以查看日志来排查问题
比如这里查看日志发现由于项目中存在pnpm-lock.yaml
导致打包时失败,在本地删除pnpm-lock.yaml
后重新提交代码后即可成功部署
当然你也可以一开始就使用pnpm来装包,这样就不会就有问题,此处出现的问题和处理方法仅仅是为了告诉你如何进行部署操作和查看日志
如果你的github账号是使用QQ邮箱注册的,那么你的微信也将收到一条部署失败的消息提醒,非常滴银杏化。你也可以通过邮件转发
的方式将其他邮箱的邮件转发至你的QQ邮箱或者钉钉、飞书等你想随时获取部署信息的地方
问题修复后部署成功,你将在dashboard
中看到如下信息
大功告成,完结撒花🎉
结语
至此,你已经完成了一个全栈项目的项目搭建
+数据库搭建
+用户鉴权
+自动化部署
等工作,你现在已经是一名合格点点点工程师
了!真棒👏!为自己鼓掌!
预告
完成了项目基建后,我们要开始着手于业务代码了,下篇文章将带领你从点点点工程师
工程师进化成点点点&CRUD全干工程师
啦,如果你觉得这篇文章对你有帮助的话不妨点赞
+收藏
+关注
支持下我,下篇文章正在努力编写中...