fix(db): 迁移 CLI 默认读取仓库根目录 .env

- datasource.ts 优先加载根目录 .env,再回退 apps/server/.env
- 生产只需维护根目录一份 .env,迁移脚本不再报 root 空密码
This commit is contained in:
2026-08-09 22:02:00 +08:00
parent 29d987ab74
commit f4072ce93a

View File

@@ -1,9 +1,18 @@
import { DataSource } from 'typeorm';
import { config } from 'dotenv';
import { join } from 'path';
import { basename, join, resolve } from 'path';
// TypeORM CLI runs from apps/server/
const root = process.cwd();
// TypeORM CLI 默认在 apps/server/ 下运行,但生产环境的 .env 通常放在仓库根目录。
// 这里先加载仓库根目录的 .env默认再加载当前目录apps/server/.env作为补充/覆盖,
// 这样无论 .env 放哪一份,迁移 CLI 都能读到数据库配置。
const root = resolve(process.cwd());
const repoRoot =
basename(root) === 'server' && basename(join(root, '..')) === 'apps'
? resolve(root, '../..')
: root;
// 先根目录后当前目录dotenv 默认不覆盖已存在变量,所以根目录优先级更高)
config({ path: join(repoRoot, '.env') });
config({ path: join(root, '.env') });
export default new DataSource({