最近用 Fastify 5 + SQLite + Drizzle ORM 搭了一个小项目,记录一下技术选型和踩坑经验。
相比 Express,Fastify 的性能更好,内置了 Schema 校验、日志、插件系统。对于小项目来说,开箱即用的体验很舒服。
SQLite 对于单机小项目完全够用,不需要额外装数据库服务。better-sqlite3 的同步 API 用起来也很顺手。
TypeScript 的 moduleResolution 设为 "bundler" 时,编译后的 JS 文件不带 .js 后缀,Node.js 原生 ESM 会找不到模块。解决方法是改用 tsx 运行。
// tsconfig.json
{
"moduleResolution": "bundler",
"module": "ESNext"
}
// 用 tsx 跑生产
npm start -> tsx dist/index.js