应用配置管理
这一节基于 env_config 文档,学习 Midway 的多环境配置最小实践。
1. 配置文件约定
配置放在 src/config/:
src/config/ config.default.ts config.local.ts config.prod.tsconfig.default.ts:所有环境都会加载config.{env}.ts:只在对应环境加载,并覆盖同名配置
2. 推荐写法:对象形式
env_config 推荐使用对象形式(更直观,也更不容易误用):
import { MidwayConfig } from '@midwayjs/core';
export default { koa: { keys: ['123456'], port: 7001, }, app: { name: 'midway-tutorial', version: '1.0.0', },} as MidwayConfig;3. 在 configuration.ts 显式加载配置
按文档建议,环境配置需要在 importConfigs 中显式声明:
import { Configuration } from '@midwayjs/core';import * as DefaultConfig from './config/config.default';import * as LocalConfig from './config/config.local';
@Configuration({ importConfigs: [ { default: DefaultConfig, local: LocalConfig, }, ],})export class MainConfiguration {}当前课程 case 只放了 config.default.ts,所以重点先掌握默认配置。
4. 快速验证
这节不建议改端口(会影响当前预览)。用下面方式验证配置生效:
把 src/config/config.default.ts 改成:
app: { name: 'midway-learning-lab', version: '2026.02',},保存后:
output会显示服务重启- 预览仍在
7001正常可访问(说明你没有破坏运行入口) - 访问默认路由
GET /可以直接看到你刚改的配置值
5. 代码里读取配置
可以用 @Config() 注入配置项:
import { Controller, Get, Config } from '@midwayjs/core';
@Controller('/')export class HomeController { @Config('app.name') appName: string;
@Config('app.version') appVersion: string;
@Get('/') async home() { return { name: this.appName, version: this.appVersion, }; }}本课 _files 已提供可直接使用的默认路由:
GET /
小结
✅ 使用 config.default.ts + config.{env}.ts 组织多环境配置
✅ 优先使用对象形式导出配置
✅ 在 importConfigs 显式声明环境配置
✅ 配置通过覆盖规则合并,后者覆盖前者
Files
Preparing Environment
- npm install
- npm run dev