bundle-server 数据库路径重复(data/ vs bundle-server/data/)
Date: 2026-07-08 Status: Fixed Scope: bundle-server · Prisma · seed · 运行时
问题描述
- 现象:仓库中同时存在
brownfield/data/bundle-server.db与bundle-server/data/bundle-server.db,清理/seed 后数据出现在错误位置,或运行时读不到刚写入的数据 - 触发条件:执行
prisma db push、npm run db:seed、npm run dev/npm start时 - 影响范围:Remote manifest 数据不一致,Admin 与 API 可能指向空库或旧库
根因分析
.env使用DATABASE_URL="file:../data/bundle-server.db",Prisma CLI 从bundle-server/解析为brownfield/data/- 旧版
db-url.ts/seed.ts通过path.resolve(cwd, 'prisma', filePath)解析,落到bundle-server/data/ npm run dev(tsx 读 src)与npm start(读 dist)在修复前也可能指向不同路径
解决方案
统一数据库到 bundle-server/data/bundle-server.db,并让 Prisma CLI、seed、dev、start 使用同一解析规则。
关键变更:
bundle-server/.env—DATABASE_URL改为file:data/bundle-server.dbbundle-server/src/lib/db-url.ts— 默认 URL 同步;路径相对bundle-server/项目根解析bundle-server/prisma/seed.ts— 复用getDatabaseUrl(),移除重复路径逻辑- 迁移
brownfield/data/bundle-server.db→bundle-server/data/,删除仓库根data/目录 npm run build— 重新编译dist/lib/db-url.jsbundle-server/README.md、docs/dynamic-multi-bundle.md— 更新文档说明
验证方式
-
src与dist的getDatabaseUrl()均输出.../brownfield/bundle-server/data/bundle-server.db -
npm run db:seed成功,sqlite3 bundle-server/data/bundle-server.db可查到 order/promo - 仓库根
brownfield/data/已不存在
后续建议
- 本地若仍留有
brownfield/data/bundle-server.db,可手动删除 - 修改
.env后需重启 bundle-server 进程