[eggjs/egg]生成的路由与代码中的不一样

2024-08-05 834 views
7

曾经写过路由 router.get('/product/order/get', function(){}); 后来将路由中的 product 删掉后,代码为 router.get('/order/get', function(){});,但是生成的路由还是 /product/order/get。

测试1:将路由改为 router.get('/order/getd', function(){});,生成的路由为 /order/getd 表现正常。 测试2:将代码 router.get('/order/get', function(){}); 放到下一行,生成的路由为 /order/get 表现正常。 测试3:另一台机器 clone 下一样的代码起的路由为 /order/get 表现正常。

问题:唯独那一行的路由 router.get('/order/get', function(){}); 生成了 /product/order/get 的路由。

Mini Showcase Repository(REQUIRED)

How To Reproduce

Steps to reproduce the behavior: 1.写过路由 router.get('/product/order/get', function(){}); 2.将路由中的 product 删掉后,代码为 router.get('/order/get', function(){});,但是生成的路由还是 /product/order/get。

Context
  • Node Version: 13.11.0
  • Egg Version:2.26.0
  • Plugin Name:
  • Plugin Version:
  • Platform:win10 1909 1587608219(1) 1587608199(1)

回答

3

Hello @HowGraceU. Please provide a reproducible example following the instruction.

Issues labeled by Need Reproduce will be closed if no activities in 7 days.


@HowGraceU,请根据这个说明提供最小可复现代码。

如果在 7 天内没有进展会被自动关闭。

9

无法复现的没法排查。排查思路就是你断点 egg-router 来查。还有 dump 生成是在 egg 里面的。

1

我使用 npm run debug 进去看了 sourcemap,加载的 router.js 里面的代码就是 router.get('/product/order/get', controller.order.get); 1587629675(1)

尽管我的代码写的是 router.get('/order/get', controller.order.get);

难道有什么缓存?

7

sourcemap ? 用了 ts ?开发期应该是 ts-node 不落盘的。

1

是的,ts。 开发期应该是 ts-node 不落盘的。的意思是?

1

用的是egg的ts模板构建的,开发期应该都是ts文件,但是控制台打开后像是有 sourcemap 的效果。 用 npm run tsc 跑出来的 js 文件内容是正常的

3

调试 egg-core 的 loader 加载 router 和 Controller 是不是最新的内容。

@whxaxes ts-node cache 有没有问题?看到 2 天前发了 8.9

7

我在代码上面加一个换行(代码写到61行),代码就正常了 1587630711(1)

把换行去掉(代码写到60行),就变成了 '/product/order/get'

0

不确定,你先定位是不是 ts-node 编译 cache 问题。

1

清空了 ts-node 的缓存文件就正常了,ts-node 的版本 7.0.1

4

清空了 ts-node 的缓存文件就正常了,ts-node 的版本 7.0.1

麻烦问下,如何清空ts-node的缓存文件