升级请参考 如何更新 Midway 中描述,请不要单独升级某个组件包。
在双十一大促之后,Midway 迎来了 3.13 版本。
这个版本主要调整了内置的 logger 模块,使其可以支持 v3 版本的 logger 库。
Breaking
- 1、未声明
@midwayjs/logger
依赖的用户的日志会出现意外错误 - 2、日志的配置定义可能丢失
这两个问题的解法在最后描述。
Feature
1、日志库升级到 v3
经过一些时间的重写,Midway 搭配的 logger 库也升级到了 v3 版本,在 v3 版本中,我们移除了 winston 依赖,重写了整个 logger 模块,性能几乎翻了一倍。
从 bundlephobia 中也能看到很明显的变化,代码的精简,使得运行更高效,代码更受控。
从这个版本开始,Midway 的日志库可以选择使用 v2 或者 v3 的日志库,注意两者的配置是不同的。
如果你想查看两个版本的变化,可以点击 这里。
如果你希望升级到 v3 版本的日志库,我们的 文档 也已经准备好了。
注意,大版本升级请谨慎,尽可能验证功能点。
2、内置服务新增 HealthService
Midway 一直没有提供内置的健康检查方案,在这一版本,终于 设计 了 HealthService 这一内置的检查服务。
HealthService 用于提供检查 API,在不同的情况下可以自行接入检查自定义组件的状态,文档在此。
同时,我们的 Configuration 生命周期也增加了一个 onHealthCheck
的阶段,用于在每次检查时执行,文档在此。
这一功能目前还没有组件接入,我们将在后续的版本中逐步完善它。
其他的一些变化
- 1、jwt 组件的配置提供更多的选项,比如 sign,verify,decode 等选项
- 2、jwt 组件导出了默认的 jwt 实例,你可以从上面获取到一些内置的错误实例,方便过滤器拦截
- 3、http-proxy 组件现在可以通过 enable 配置来关闭了,这样你可以自行引入中间件做更多的自定义处理
- 4、在 web 框架中,context.state 的类型现在也可以自定义了,这在文档中也进行了更新
- 5、修复了 static-file 组件的 namespace 不正确的问题
- 6、修复了 framework 加载时主框架顺序不固定的问题
解决方案
1、日志库丢失的方案
由于大部分脚手架我们都已经引入了日志库依赖,一般来说不需要处理。
如果未引入日志库,框架会在启动时报错,只需要在 package.json
的依赖中写入即可。
"dependencies": {
+ "@midwayjs/logger": "^2.19.2",
},
注意,只有上述最新版本的日志库才兼容 v3.13.0
以上的 @midwayjs/core
。
2、日志的配置定义丢失
由于 ts 类型合并需要在项目中显式声明一次,你需要在 interface.ts
中加入下面的代码。
+ import type {} from '@midwayjs/logger';
/**
* @description User-Service parameters
*/
export interface IUserOptions {
uid: number;
}
这样在 src/config/config.default.ts
中配置 midwayLogger
字段时,日志库的定义会恢复。