背景
最近我一直在开发一个 Node 全栈 AIGC 项目 划水AI,技术栈是 Nodejs + Next.js + pgsql 数据库 + React + Tiptap 编辑器 + ChatGPT API
这个项目(一期功能)计划 7 月上线,现还在公开测试中,想报名参与的可私聊我。
我开发的 2-3 个月期间,遇到了很多问题,踩了很多坑,本文分享一些比较典型的。这些都是非常宝贵的项目经验。
而且,这些问题都是真实上线的项目才能遇到的,你在本地开发一个 demo 练手是遇不到这些问题的。
PS:现在项目公开测试中,就是真实的线上环境(预发环境),托管在阿里云 Serverless 函数计算 FC 服务中。
问题1:next-theme 切换黑白主题的 warning
项目使用了 shadcn-ui 组件库,其中使用 next-theme 来切换黑白主题
但当代码运行时会有一个浏览器警告,如下图
通过查询 shadcn-ui GitHub issue 可找到一个解决方案,在 html
标签添加<html lang="en" suppressHydrationWarning>
属性即可。
根据 React 相关文档,这个问题是因为客户端内容和服务端渲染的内容不一致,而导致的一个警告,某些情况下这是难免的,所以它给出了这样的属性来避免。
问题2: prisma 连接 pgsql 的小问题
Prisma 是 Nodejs 非常流行的 ORM 工具,用于连接和操作各种数据库,划水AI 项目用的是 pgsql 数据库。
当用 prisma 连接 pgsql 数据库的时候,遇到了很多小问题。例如密码尽量不要选择特殊字符,否则需要替换
还有参与 划水AI 项目的其他同学,在项目 wiki 中分享的他自己遇到的一些问题,例如
问题3: Next.js middleware 只能运行在 Edge 运行时
Edge runtime (边缘运行时)是用于快速计算和分布式计算,和 Nodejs 运行时有区别,它更轻量级,支持的 API 更少。
Next.js