Domi
Domi

Reputation: 24618

Routing in Node & Express: app.use does not work unless full path is provided

I have the following setup:

app.use('/', rootRoute);
app.use('/wiki', wikiRoute);

/// default handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

If I visit /wiki, I end up in wikiRoute, as expected, but if I visit /wiki/some/file, it triggers the default handler. I would expect it to also go to wikiRoute instead.

Upvotes: 2

Views: 7410

Answers (1)

Domi
Domi

Reputation: 24618

Handling of sub-routes requires wildcards, like so:

app.use('/', rootRoute);
app.use('/wiki/*', wikiRoute);

/// default handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

Now, /wiki/some/file also ends up in wikiRoute!

Upvotes: 5

Related Questions