Skip to content

middleware TypeError for not found routes #168

@asyncliz

Description

@asyncliz

I'm submitting a ...

  • bug report
  • feature request
  • other (Please do not submit support requests here (below))

When using an action and calling context.next() with child routes, a TypeError is thrown if the route does not exist. I expected a route not found error to be thrown.

https://jsbin.com/zicukiyoxu/1/edit?html,output

    const router = new UniversalRouter({
      path: '/',
      async action({ next }) {
        console.log('middleware: start');
        const child = await next();
        console.log('middleware: end');
        return child;
      },
      children: [
        {
          path: '/hello',
          action() {
            console.log('route: return a result');
            return 'Hello, world!';
          }
        }
      ]
    });

    
    router.resolve('/hello/404');
universal-router.js:439 Uncaught (in promise) TypeError: Cannot read property 'route' of undefined
    at next (VM173 universal-router.js:439)
    at VM173 universal-router.js:462

If you comment out the action middleware, you get the expected error message

Uncaught (in promise) Error: Route not found
    at next (VM173 universal-router.js:451)
    at VM173 universal-router.js:462

I still get the TypeError if I add a fallback route using '*'. Without the action middleware and with a fallback, the fallback route is correctly returned and no error is thrown.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions