hooks icon indicating copy to clipboard operation
hooks copied to clipboard

hooks build 命令不会清除以前部署的文件

Open Dreamer-Paul opened this issue 2 years ago • 2 comments

包版本: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 重新生成就可以了。

看看官方怎么认为这件事吧,我认为应该在部署的时候自动删除下旧的部署内容,而不是一昧直接覆盖上去==

Dreamer-Paul avatar May 22 '22 10:05 Dreamer-Paul

hooks build 有支持一个 --clean 命令,没有默认开启,你可以通过 hooks build --clean 来完成操作。

至于默认设置清理行为,我这边需要再想想看

Lxxyx avatar May 22 '22 14:05 Lxxyx

好嘞,感谢解答 🙏

Dreamer-Paul avatar May 22 '22 17:05 Dreamer-Paul