Procházet zdrojové kódy

refactor(timezone): 时区收敛到统一配置源(.env TZ变量)

- .env / .env.production / .env.example 新增 TZ=Asia/Shanghai 配置
- app.ts / time.ts 从 process.env.TZ 读取,不再硬编码
- models/index.ts 日志输出使用 process.env.TZ
- 前端 time.ts 加注释标记与 server/.env 同步
MyFramework User před 3 měsíci
rodič
revize
fd16fecc0d

+ 1 - 0
my-uniapp-vue3/src/utils/time.ts

@@ -6,6 +6,7 @@
  * 本工具提供本地时区正确的日期边界值。
  */
 
+// ⚠️ 与 server/.env 中的 TZ 保持一致,修改时需同步
 export const TIMEZONE = 'Asia/Shanghai';
 
 /**

+ 3 - 0
server/.env.example

@@ -2,6 +2,9 @@
 PORT=3000
 NODE_ENV=development
 
+# 统一时区配置(服务端所有时间处理 + 数据库连接以此为准)
+TZ=Asia/Shanghai
+
 # MySQL 数据库
 DATABASE_URL="mysql://root:password@localhost:3306/audio-book?serverTimezone=Asia/Shanghai"
 

+ 3 - 0
server/.env.production

@@ -1,6 +1,9 @@
 # 生产环境配置
 NODE_ENV=production
 
+# 统一时区配置(服务端所有时间处理以此为准)
+TZ=Asia/Shanghai
+
 # 服务端口
 SERVER_PORT=3100
 

+ 2 - 2
server/src/app.ts

@@ -1,6 +1,6 @@
 // Auto-deploy test comment
-// 设置时区为上海(Asia/Shanghai)确保日志和数据库时间一致
-process.env.TZ = 'Asia/Shanghai';
+// 设置进程时区(从.env读取,确保日志和数据库时间一致)
+process.env.TZ = process.env.TZ || 'Asia/Shanghai';
 
 import Koa from 'koa';
 import cors from '@koa/cors';

+ 1 - 1
server/src/models/index.ts

@@ -11,7 +11,7 @@ const prisma = new PrismaClient({
 export async function connectDatabase(): Promise<void> {
   try {
     await prisma.$connect();
-    console.log('📦 MySQL 连接成功 (Asia/Shanghai)');
+    console.log(`📦 MySQL 连接成功 (${process.env.TZ || 'Asia/Shanghai'})`);
   } catch (error) {
     console.error('📦 MySQL 连接失败:', error);
     throw error;

+ 2 - 1
server/src/utils/time.ts

@@ -9,7 +9,8 @@
  * Intl.DateTimeFormat 配合 timeZone 参数能正确获取指定时区的日期。
  */
 
-export const TIMEZONE = 'Asia/Shanghai' as const;
+// 从环境变量读取,与 app.ts 和 .env 保持一致
+export const TIMEZONE = (process.env.TZ as string) || 'Asia/Shanghai';
 
 /**
  * 获取当前日期字符串(Asia/Shanghai 时区)