hooks
hooks copied to clipboard
hooks build 命令不会清除以前部署的文件
包版本:3.0.0 NodeJS:16.9.1(可能和版本没关系)
今天使用 hooks build
部署项目的时候一切正常,但执行 hooks start
时发现:
2022-05-22 18:11:22,916 ERROR 1016 MidwayDuplicateRouteError: Duplicate router "get /api/acgm" at "apiAcgmIndex.handler" and "apiAcgm.handler"
at WebRouterCollector.checkDuplicateAndPush (/Users/paul/Documents/项目/Midway-Startup/Paul-API-Next/node_modules/@midwayjs/core/dist/common/webRouterCollector.js:322:19)
at WebRouterCollector.collectRoute (/Users/paul/Documents/项目/Midway-Startup/Paul-API-Next/node_modules/@midwayjs/core/dist/common/webRouterCollector.js:135:22)
at WebRouterCollector.analyze (/Users/paul/Documents/项目/Midway-Startup/Paul-API-Next/node_modules/@midwayjs/core/dist/common/webRouterCollector.js:29:18)
at WebRouterCollector.getRouterTable (/Users/paul/Documents/项目/Midway-Startup/Paul-API-Next/node_modules/@midwayjs/core/dist/common/webRouterCollector.js:297:24)
at KoaControllerGenerator.loadMidwayController (/Users/paul/Documents/项目/Midway-Startup/Paul-API-Next/node_modules/@midwayjs/core/dist/common/webGenerator.js:64:45)
at MidwayKoaFramework.loadMidwayController (/Users/paul/Documents/项目/Midway-Startup/Paul-API-Next/node_modules/@midwayjs/koa/dist/framework.js:80:30)
at MidwayKoaFramework.run (/Users/paul/Documents/项目/Midway-Startup/Paul-API-Next/node_modules/@midwayjs/koa/dist/framework.js:104:20)
at MidwayFrameworkService.runFramework (/Users/paul/Documents/项目/Midway-Startup/Paul-API-Next/node_modules/@midwayjs/core/dist/service/frameworkService.js:113:41)
at MidwayLifeCycleService.init (/Users/paul/Documents/项目/Midway-Startup/Paul-API-Next/node_modules/@midwayjs/core/dist/service/lifeCycleService.js:58:37)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
code: 'MIDWAY_10008',
cause: undefined
}
提示路由冲突,但我没发现出具体冲突的原因,我搜到了这篇 PR,找到了错误提示的出处:https://github.com/midwayjs/midway/pull/1023 之后评论说明了下情况...
项目目录结构:
api
- admin
-- acgm
--- add.ts
- acgm.ts
理论上的路由地址:
POST /api/admin/acgm/add
GET /api/acgm
试了下改 admin/acgm
的路由名称重新部署无效,发现是项目迭代原因所致,/api/acgm
曾经是个目录,但后期变回了文件,旧的文件不会随着部署自动清理,删除掉 dist
重新生成就可以了。
看看官方怎么认为这件事吧,我认为应该在部署的时候自动删除下旧的部署内容,而不是一昧直接覆盖上去==
hooks build 有支持一个 --clean 命令,没有默认开启,你可以通过 hooks build --clean
来完成操作。
至于默认设置清理行为,我这边需要再想想看
好嘞,感谢解答 🙏