跳到主要内容

Release 3.13.0

· 阅读需 5 分钟
Harry Chen

升级请参考 如何更新 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 字段时,日志库的定义会恢复。