umi
umi copied to clipboard
[Bug] umi4 4.0.10 mock 更改,热更新相关问题
What happens?
因windows mock热更新不可用,这个是mac和windows下热更新问题
mac下
- mock/custom-data/** 这里的文件不是mock入口,工具方法
- umi3要排除,排出后,umi3热更新没问题
- umi4排除了,改这里的文件(mock/custom-data/**),不热更新 (入口mock/users.ts引用了这里)
- umi4不排除时,文件会热更新,但是改mock/custom-data/template-data.ts文件内容,需要改2次,才有第一次更改的数据
Mini Showcase Repository(REQUIRED)
Please provide a minimal reproduction then upload to your GitHub. 请提供 最小重现,并上传到你的 GitHub 仓库 复现仓库(注意:mac-mock-bug分支,主分支是windows 的bug):https://github.com/liangskyli/umi4-bug/tree/mac-mock-bug
相关代码说明:
.umirc.ts 文件
mock: {
// umi3要排除,这不是mock入口,umi4排除了,改这里的文件,不热更新,umi3没问题
// umi4注释后,mock/custom-data/template-data.ts 文件更改,需要改2次,才有第一次更改的数据,延迟了一次
//exclude: ['mock/custom-data/**'],
}
mock/custom-data/template-data.ts 文件
response: {
data: {
id: 2,
// umi4注释exclude: ['mock/custom-data/**']后,
// 更改name的值,需要改2次,才有第一次更改的数据,延迟了一次
name: 'name2',
},
},
mock/users.ts 文件
export default {
// 返回值也可以是对象形式
'GET /api.php': (req: any, res: any) => {
const json = getMockData(
{data:{ id: 1, name: 'name1', c:'c', d:'d' }},
req,
// 这里umi4不能使用/api.php key,会标识重复mock路由,umi3使用exclude: ['mock/custom-data/**']后没问题
// CustomData['/api.php'],
CustomData['TemplateData/api.php'],
);
res.json(json);
},
}
How To Reproduce
Steps to reproduce the behavior: 1. 2.
Expected behavior 1. 2.
复现步骤见复现仓库readme.md 和代码注释说明
Context
- Umi Version:4.0.10
- Node Version:v14.19.3
- Platform:macOS 12.5
umi3 mock ,只要主入口文件加入mock监听,工具文件排除,更新工具文件,会成功热更新,umi4就有问题,应该逻辑和umi3的不一致导致的