Files
dashboard/.qoder/repowiki/knowledge/zh/后端环境变量与配置加载体系__2/后端环境变量与配置加载体系__2.md
T
eafonyang f48f1cce70 docs(tabs): 更新标签页视图组件设计与交互细节
- 采用固定内边距策略,解决标签页悬停时的布局抖动问题
- 统一关闭按钮尺寸为14x14px,提升视觉一致性
- 优化活动标签和悬停状态的层级管理,确保视觉层次正确
- 增强视觉反馈,添加内嵌阴影效果改善用户体验
- 添加平滑颜色过渡动画(0.2秒),提升交互流畅度
- 支持玻璃拟态设计系统,实现现代化视觉风格
- 完善工具箱图标支持,确保标签页工具功能准确显示
2026-07-15 09:58:56 +08:00

3.0 KiB
Raw Blame History

kind, name, category, scope, source_files
kind name category scope source_files
configuration_system 后端环境变量与配置加载体系 configuration_system
**
backend/src/config/loadEnv.js
backend/src/config/env.js
backend/src/config/database.js
backend/src/config/redis.js
backend/src/config/logger.js
.env.example
backend/src/app.js

系统概述

本项目的配置系统基于 Node.js 的 dotenv + 进程环境变量(process.env)实现,采用「根目录 .env 文件 + Docker compose env_file 注入」的双源模式,通过统一的入口在应用启动时完成加载。

核心机制

  • 统一入口backend/src/app.js 首行 require('./config/loadEnv') 触发配置加载,确保所有后续模块都能读到环境变量。
  • 本地开发loadEnv.js 解析项目根目录 dashboard/.env(相对 __dirname 向上四层),使用 dotenv.config({ path }) 注入到 process.env;若文件不存在则静默跳过。
  • Docker 部署:容器内无 .env 文件,由 docker-compose.ymlenv_file 直接注入环境变量,fs.existsSync 判断避免覆盖已有值。
  • 环境判断config/env.js 暴露 APP_ENVisDevelopmentisProduction 三个常量,供各模块按环境切换行为(如 Sequelize SQL 日志开关)。

配置项组织

所有可配置项集中在根级 .env.example,按功能域分组注释:

  • 数据库:DATABASE_HOST/PORT/NAME/USER/PASSWORD
  • 应用:APP_NAMEAPP_ENVPORT
  • JWT 与初始管理员:JWT_SECRETDASHBOARD_ADMIN_USERNAME/PASSWORD
  • MeilisearchMEILISEARCH_URL/API_KEY/INDEX
  • AWS S3AWS_REGION/ACCESS_KEY_ID/SECRET_ACCESS_KEY/S3_OTA_BUCKET/S3_MEASUREMENT_BUCKET
  • OTA URL 与上传目录:OTA_X8_PUBLIC_BASEOTA_X9_URL_BASEOTA_UPLOAD_DIR
  • Curve APICURVE_API_BASE_URL
  • Redis EQ 缓存:REDIS_HOST/PORT/PASSWORD/EQ_DB

配置消费方式

各模块直接通过 process.env.XXX || '默认值' 读取,形成「分散式消费」模式:

  • config/database.js → MySQL 连接参数
  • config/redis.js → ioredis 客户端(含密码可选、错误监听)
  • config/logger.js → winston 输出级别与文件路径
  • services/otaStorage.js → OTA 包上传目录与 S3 配置
  • services/measurementStorage.js → 频响测量文件 S3 存储
  • routes/models.js → Meilisearch 搜索索引
  • services/curveClient.js → 曲线查询外部 API 基地址

设计约定与约束

  1. 禁止硬编码敏感信息:所有密钥、密码、URL 必须来自环境变量,.env 已在 .gitignore 中排除。
  2. 默认值兜底:每个 process.env 读取都提供合理默认值,保证本地开箱即用。
  3. 按域拆分配置文件:数据库、Redis、日志等基础设施各自独立文件,便于扩展新依赖。
  4. Docker 优先:生产环境推荐通过 compose env_file 注入而非挂载 .env 文件。
  5. 新增配置项流程:先在 .env.example 添加注释说明,再在各消费处补充 process.env.XXX || default