我开始开发非常小的应用程序,并决定使用koa框架和koa-router(将来的其他一些中间件)
问题是,在指定我的路线后,会出现一个奇怪的全部,没有方法,没有网址路径
// excerpt of /app/routes/admin
var router = require('koa-router')().prefix('/admin');
router.get('/a.html', function *(next){
return this.render('a', {some: 'data'})
})
router.get('/index.html', function *(next){
return this.render('index', {})
})
router.get('/b.html', function *(next){
return this.render('b', {})
})
module.exports = router

// excerpt of Main App
// routes
var adminRouter = require('/app/routes/admin')
this.app.use( adminRouter.routes())
this.app.use( adminRouter.allowedMethods())
// Checking Routes
console.log(adminRouter.stack.map(i => i.path));

...运行时会得到以下结果:
[ '(.*)',
'/admin/a.html',
'/admin/index.html',
'/admin/b.html' ]
到底是什么地方(。*)来了?
另外,如果我启用了koa-router的调试,我会得到
koa-router defined route HEAD,GET /admin/list.html +46ms
koa-router defined route HEAD,GET /admin/index.html +1ms
koa-router defined route HEAD,GET /admin/queries.html +0ms
koa-router defined route (.*) +1ms
,所以为了让事情变得更奇怪,表明这条路线没有相关的任何方法
任何想法"幻影"条目?
答案 0 :(得分:0)
行。不完全是一个解决方案,但至少它不再是Phantom 在使用调试器挖掘之后,似乎在添加中间件时路由aperas"全局"到路由器,即你的"使用"它
router.use(anotherRouter.routes()
这非常有意义,就好像您正在全球范围内添加中间件"那样,你期望通过它过去的每个请求
我打开了这个问题,因为我找不到404我的所有路线,并怀疑这个是罪犯,但最后是几个不同的问题(不可到达的路径,不存在的文件,配置错误,等)