You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

koa-router返回Not Found问题求助:访问localhost:3000/en报错

解决Koa Router访问/en返回Not Found的问题

我看了下你写的代码,问题出在路由前缀的叠加上。咱们一步步拆解:

你创建了enpackage这个子路由,给它定义了get('/en', ...)的规则,然后又把这个子路由挂载到主路由router的/en前缀下。这就导致实际生效的路由路径变成了/en/en,而不是你期望的/en——所以当你访问localhost:3000/en时,根本找不到对应的路由规则,自然返回Not Found。

修正方法很简单,把enpackage里的路由路径改成根路径/就行:

const Router = require('koa-router')
let enpackage = new Router()
// 把 '/en' 改成 '/'
enpackage.get('/', async ( ctx )=>{
  ctx.redirect('/')
})
let router = new Router()
router.use('/en', enpackage.routes(), enpackage.allowedMethods())
app.use(router.routes()).use(router.allowedMethods())

这样修改后,主路由的/en前缀加上子路由的/,就正好匹配localhost:3000/en这个路径,访问时就会触发重定向到根路径了。

另外可以提个小建议:如果只是简单的重定向需求,其实不用单独创建子路由,直接在主路由上定义会更简洁:

const Router = require('koa-router')
let router = new Router()
router.get('/en', async (ctx) => {
  ctx.redirect('/')
})
app.use(router.routes()).use(router.allowedMethods())

这样代码更精简,也不容易出现路由前缀叠加的问题~

内容的提问来源于stack exchange,提问作者yupang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:53:18