Nextjs(App Router) 开发记录

news2024/9/23 16:14:42

在这里插入图片描述

最近业余在开发一款智能助理产品,记录开发过程中的一些问题以备忘,也是帮其他人防坑。

主要技术栈

本项目采用了前沿的技术栈来构建一个高性能且可维护的应用。选择了 Nx 作为构建管理和单一代码库解决方案,通过模块化和插件系统来扩展和优化开发流程、支持续集成。Next.js(App Router模式)为我们提供了服务器渲染和客户端渲染的能力,同时简化了路由配置。项目主要使用 Typescript 编写,这有助于捕捉类型错误并在编译时解决它们。

界面方面,Material UI和Tailwind CSS分别作为UI组件库和原子化CSS样式方案被引入,确保了快速且一致的UI开发体验。为了实现3D图形功能,我们集成了react-three-fiber,它是Three.js的一个 React 绑定。使用 Recoil 进行状态管理,它提供了一个直观的状态管理模型。

接口层,使用Apollo Client 来发送 GraphQL 请求和缓存,并将GraphQL转换为Cypher查询,以便与图数据库Neo4j交互。为了提高开发效率,我们还利用了 GraphQL Code Generator 来自动生成代码。关系数据库读写,采用 Prisma ORM,它可以跨多种数据库环境工作,并提供了强大的类型安全特性。

采用 Next Auth 实现用户认证。为了保证代码质量,我们引入了jest进行单元测试,eslint、commitlint和prettier用于代码风格和提交规范的检查,结合 VSCode 插件实现自动格式化、提交检查。此外,项目还探索了 WebAssembly 和 WebWorker 技术以增强应用性能

  • Nx - 基于插件的单一代码库构建管理系统
  • Next.js - 开发框架,采用 App Router 模式
  • Prisma ORM: 支持多数据库的 Node.js and TypeScript ORM
  • Material UI - UI组件库
  • Tailwindcss - 原子化 CSS 样式方案
  • Typescript - 基于 Javascript 的编程语言
  • react-three-fiber - Three.js 组件
  • Apollo Client - GraphQL 客户端
  • @neo4j/graphql - 将 GraphQL 转换为 Cypher, 作为图数据库 Neo4j 查询执行层
  • Recoil - 状态管理
  • Next Auth - Web 认证
  • GraphQL Code Generator- 基于 GraphQL Schema 生成代码的工具
  • 其他: jest eslint commitlint prettier WebAssembly WebWorker docker…

Bug 坑

1. Nx 19.6.2 使用 pnpm 初始化失败

执行命令:npx create-nx-workspace --pm pnpm 可生成代码,但无法正常运行。查看错误日志:A project already exists in this directory

通过与npm创建的项目对比,发现缺少 @nx/react

解决pn add -D @nx/react, 之后 nx dev app 可运行

2. pnpm 用 dlx

pn run generate 报错:The "path" argument must be of type string. Received undefined

分析:实际执行的是 npx prisma generate --schema=./file-path ,可能是 npx 执行时缺少相关包或版本不一致导致。
解决:改用 dlx, pnpm dlx prisma generate

技巧

1. 自定义 VSCode 折叠显示

在这里插入图片描述
.vscode/settings.json中添加:

  "explorer.fileNesting.enabled": true,
  "explorer.fileNesting.patterns": {
    "*.env": "$(capture).env.*",
    "package.json": ".gitignore,.prettierrc,.prettierignore,.eslintrc.json,.eslintignore,.editorconfig......."
  }

欢迎合作

如果这篇文章对您有所帮助,欢迎点赞、分享和留言,让更多的人受益。感谢您的细心阅读,如果发现了任何错误或需要补充的地方,请随时告诉我,我会尽快处理 ^_^

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2068137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源的个人独立博客Moments社交优化项目源码

开源的个人独立博客Moments社交优化项目源码,为你提供了一个与关注的博客作者和读者互动的全新方式,让你的博客体验更加丰富和充实。 Moments的核心目标是通过整合各种订阅源,如RSS和Atom,将你感兴趣的博客转化为一个个人朋友圈。…

日志排查——linux

目录 介绍步骤 介绍 /var/log/wtmp:记录登录进入、退出、数据交换、关机和重启,即last。 /var/log/cron:记录与定时任务相关的日志信息。 /var/log/messages:记录系统启动后的信息和错误日志。 /var/log/apache2/access.log&a…

你不知道的console方法

JavaScript为我们提供了一个内置的调试工具,即控制台(console),使开发人员能够测试、调试和与他们的网页进行交互。JavaScript的控制台对象中有几种可用的方法,每种方法都有不同的用途。本文将讨论这些方法,并提供它们的使用示例。…

计算机毕业设计 学院网站 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

Linux中解决 zfs 安装后无法加载和使用,报错类似如下:modprobe: FATAL: Module zfs not found.

Linux中解决 zfs 安装后无法加载和使用,报错类似如下:modprobe: FATAL: Module zfs not found. # modprobe zfs modprobe: FATAL: Module zfs not found.解决办法: yum remove zfs spl kmod-zfs -yyum update -y --skip-brokenos_v$(cat /et…

文献翻译什么软件好?文献翻译全文软件推荐这5个

处暑已过,秋风渐起,知识的田野也迎来了收获的季节。在学术研究的旅途中,我们常常需要跨越语言的界限,探寻远方的智慧。 每当面对厚重的外文文献,应该如何快速准确地转化为可读的中文呢?其实只要选择一款高…

加速指南:如何使用Kimi提升论文写作效率?

在学术研究领域,撰写论文是一项基础且关键的任务,它要求作者不仅要有扎实的专业知识,还要具备高效的信息处理能力和清晰的表达技巧。学术写作是一个复杂的过程,涉及多个阶段:从选题、资料搜集、论文结构设计&#xff0…

STM32(五):定时器——输出比较

定时器输出比较功能:输出PWM波形 OC(Output Compare)输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形。 每个高级定时器和通用定时器…

【硬件模块】红外跟随避障模块

红外跟随避障模块实物图 红外避障模块不断发射红外信号,当红外信号: 有反射回来,OUT 输出低电平,输出指示灯(绿灯)亮; 没反射回来,OUT 输出高电平,输出指示灯&#xff08…

tcp通信以及wireshark抓包

loop: //本地回环测试 tcp在传输时,有可能就会将两次发送的内容粘到一起,这是由于tcp的第三个特点:字节流式传输。它不一定会将两次发送出来的数据进行严格区分。这种现象在tcp链接中叫粘包。 但是socket在底层发送东西的时候是会在一段时间…

【微信小程序】使用 npm 包 - API Promise化-- miniprogram-api-promise

1. 基于回调函数的异步 API 的缺点 默认情况下,小程序官方提供的异步 API 都是基于回调函数实现的,例如,网络请求的 API 需要按照如下的方式调用: 缺点:容易造成回调地狱的问题,代码的可读性、维护性差&a…

I2C软件模拟与Delay寄存器延迟函数

环境 芯片:STM32F103ZET6 库:来自HAL的STM32F1XX.H 原理图 有图可知SCL和SDA两条线接到了PB10和PB11 Driver_I2C.h #ifndef __DRIVER_I2C #define __DRIVER_I2C#include "stm32f1xx.h" #include "Com_Delay.h" // 定义拉高SCL引脚的宏操作 #…

【电子数据取证】应用程序提取及固定

文章关键词:电子数据取证、手机取证、计算机取证、计算机仿真、云取证 一、前言 在数字化时代,电子数据已成为现代社会不可或缺的一部分,它不仅记录着个人的日常生活轨迹,也承载着企业运营的核心信息,更在司法体系中…

Nginx知识详解(理论+实战更易懂)

目录 一、Nginx架构和安装 1.1 Nginx 概述 1.1.1 nginx介绍 1.1.2 Nginx 功能介绍 1.1.3 基础特性 1.1.4 Web 服务相关的功能 1.2 Nginx 架构和进程 1.2.1 Nginx 进程结构 1.2.2 Nginx 进程间通信 1.2.3 Nginx 启动和 HTTP 连接建立 1.2.4 HTTP 处理过程 1.3 Nginx …

pdf转换成excel在线转换?这3款别错过

作为一名财务人员,我每天的工作都离不开处理大量的文件和数据。其中,将PDF格式的报表转换成Excel表格是一项经常要做的工作。在众多的PDF转换工具中,我试过了三款PDF转换工具,现在就来分享一下我的使用体验。 一、福昕PDF转换大师…

普元EOS-低开页面下拉选择控件加载列表数据

1 前言 普元EOS进行低代码开发页面可以高效提高开发效率,并且减少代码的出错机会。 在低代码开发页面的时候,表单页面中可以使用大量的常用控件。 本文将讲解下拉选择组件的使用。 2 下拉选择使用EOS内置字典作为数据源 下拉选择可从字典作为数据源&a…

25届网安秋招面试之后台信息泄露

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s…

C++ TinyWebServer项目总结(9. I/O 复用)

I/O 复用使得程序能够同时监听多个文件描述符,从而提高程序的性能。I/O 复用本身是阻塞的。Linux 下实现 I/O 复用的系统调用主要有 select、poll 和 epoll。 select 系统调用 select API select系统调用:在一段指定时间内,监听用户感兴趣…

Java语言程序设计——篇十七(1)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

每日OJ_牛客_美国节日(日期模拟)

目录 牛客_美国节日(日期模拟) 解析代码 牛客_美国节日(日期模拟) 美国节日__牛客网 解析代码 题目表述很明白,难点在于要求一个月第N个星期W。那么面对这个问题,拆解的思路是,首先&#xff…