javascript - 如何摆脱 koa-router 添加的未定义的 "phantom"路由

标签 javascript node.js koa koa-router

我开始开发非常小的应用程序,并决定使用 koa 框架和 koa-router (以及将来的一些其他中间件)

问题是指定我的路由后,出现奇怪的catch-all, no method, no url 路由

// 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

,让事情变得更奇怪的是,表明该路由没有任何类型的关联方法

对“Phantom”条目有什么想法吗?

最佳答案

好的。不完全是一个解决方案,但至少它不再是 Phantom 使用调试器进行挖掘后,似乎当中间件“全局”添加到路由器时,即当您“使用”它时,路由 aperas

router.use(anotherRouter.routes()

这非常有道理,就好像您以这种方式“全局”添加中间件一样,您希望每个请求都通过它

我之所以提出这个问题,是因为我的所有路线都出现 404 not found,并怀疑这是罪犯,但最终它是针对几个不同的问题(不可到达的路径、不存在的文件、配置错误、等)

关于javascript - 如何摆脱 koa-router 添加的未定义的 "phantom"路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39479972/

相关文章:

javascript - 在 Javascript DOM 中,可以将焦点设置到一个项目然后在文档中呈现该项目吗?

html - 如何使用带有标准 HTML 而不是 Jade 的 Piler?

javascript - ES2015 node.js 中的可选导入

node.js - Node IPC 如何在 2 个进程之间工作

node.js - Koa 是否安全地处理错误?

node.js - 在 Koa 中返回 JSON

javascript - 使用归档器创建内存中的 .zip,然后将此文件发送到 Node 服务器上的 koa 客户端

javascript - 根据下一个元素的类显示/隐藏一个元素

javascript - 地理位置不适用于 chrome

javascript - 如何在 JavaScript 上检查日期和时间?