nuxt3: trpc-nuxt和sqlite导致的503错误

原文链接:

https://www.xxdl.xyz/archives/nuxt-trpc-503-error-sqlite

项目介绍

相关版本

nuxt: 3.17+/4.0.2

node: 18.18.2/20.19.4都试过

trpc-nuxt: 1.2.0

nuxt全栈项目, 使用了nuxt ui pro作为组件库, 前后端通信用的是trpc-nuxt. 数据库用的是sqlite.

为什么不用mysql?

项目写好后是准备独立使用的, 把数据放在使用者本地, 保证数据安全.

问题描述

项目能正常启动, trpc接口和参数也能正常的提示和返回. 这是前提.

但当我修改server/trpc/routers/ 下的文件时, 就会出现Dev server is unavailable. 错误

有时也会出现 **  ELIFECYCLE  Command failed with exit code 3221225477. **

这些错误出现的时机是完全随机的, 有时加个log打印就报错, 有时新增个方法就报错, 完全没办法复现.

比如trpc/routers下面有10个文件, 有时候我修改到3个的时候报错, 重启后, 修改第2个文件就又报错, 完全随机.

问题复现

首先是搜github, 找到有个类似的问题: Nuxt restarts when data in sqlite .db file is updated in directory root, 按照他的说明, 不让.db在根目录. 当天测试是可以, 但第二天不知道为啥就失效了, 问题依旧存在.

接着我想做个demo复现问题, 相关的仓库在这里. 但这个项目出问题的概率, 是我原项目的1/10, 有时候甚至能一直正常使用.

后面我想着从我的原项目一点点删除东西. 我分别测试了下面的几种情况:

  • 把路由目录下的内容简写, 取消多余的引用 -> 报错
  • trpc/routers/index.ts文件中删除一些引用 -> 依旧报错
  • 不打开web页面的时候修改 -> 报错
  • 一次性修改多个文件, 统一保存 -> 报错
  • 把.db文件放到其他目录, 使用绝对路径使用 -> 还是报错
  • 我甚至复制了两份代码, 一个跑前端, 一个跑后端, trpc通过绝对路径引用对方的...reuters/index.ts文件 -> 还是报错

再后面我开始排查trpc client的问题, 但不知道从哪开始, 放弃了.

解决问题

接着我重新查看项目: 既然不管我怎么动trpc/routers里面的文件, 他都报错, 哪可能trpc是没问题的.

nuxt是自己用过的, 正常在server目录里写路由没出现过这种问题, drizzle orm也不是第一次用. 剩下的可能就是sqlite的问题了.

所以重新将sqlite换成mysql, 没想到居然可以了. 不过当我修改后的第一个请求,时间明显的长于普通请求.

猜测是修改是需要重新建立数据库链接, 网络链接可以重试, 本地文件重建链接时可能导致nuxt内部出错, 所以一直503

相关推荐
摇滚侠8 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试9 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
2501_937767169 小时前
自建 SQL 数据库定时备份踩坑复盘与落地思路
数据库·sql
silvamux_11 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
I Am a robert girl12 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒13 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
SelectDB13 小时前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析
SelectDB14 小时前
拿 Planet 的账单一行行对下来,我总结出三个可自查的校验点
大数据·数据库·数据分析
SelectDB14 小时前
Apache Doris + Vane:让多模态数据进入业务分析
大数据·数据库·数据分析
pjj1985415 小时前
ClickHouse 与 Doris 数据库技术梳理:看懂分析型数据库
数据库·clickhouse