ZijianHe / koa-router

Router middleware for koa.
MIT License
4.85k stars 408 forks source link

Nested router allowedMethods() returns undefined if the middleware is not a generator function #321

Open nivekz opened 7 years ago

nivekz commented 7 years ago
const koa = require('koa');
const router = require('koa-router');

const app = koa();
const rootRouter = router();
const fooRouter = router();

fooRouter.get('/', function index() {
  this.body = 'Hello World';
});

rootRouter.use('/foo', fooRouter.routes(), fooRouter.allowedMethods());

app
  .use(rootRouter.routes())
  .use(rootRouter.allowedMethods());

app.listen(3000);

Visiting /foo gives the following error:

  TypeError: undefined is not a function
      at Object.allowedMethods (/Users/Kevin/workspace/nodejs/m/node_modules/koa-router/lib/router.js:374:12)
      at next (native)
      at Object.dispatch (/Users/Kevin/workspace/nodejs/m/node_modules/koa-router/lib/router.js:336:14)
      at next (native)
      at Object.<anonymous> (/Users/Kevin/workspace/nodejs/m/node_modules/koa-compose/index.js:28:19)
      at next (native)
      at onFulfilled (/Users/Kevin/workspace/nodejs/m/node_modules/co/index.js:65:19)
      at /Users/Kevin/workspace/nodejs/m/node_modules/co/index.js:54:5
      at Object.co (/Users/Kevin/workspace/nodejs/m/node_modules/co/index.js:50:10)
      at Object.createPromise (/Users/Kevin/workspace/nodejs/m/node_modules/co/index.js:30:15)
bigmeech commented 7 years ago

Hi @nivekz! were you ever able to resolve this issue?