From d8395e4eeba8e7114c0c5463ea2c016e5fced1ac Mon Sep 17 00:00:00 2001 From: Damien Simonin Feugas Date: Thu, 13 Oct 2022 20:03:10 +0200 Subject: [PATCH] docs: more detailed error message when failing to parse a middleware matcher (#41390) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 📖 What's in there? This is a follow-up for https://github.com/vercel/next.js/pull/40180 Someone made the good point that users may get directed to this error page while setting up middleware matchers. And that page has no information (yet) about it. ## Documentation / Examples - [ ] Make sure the linting passes by running `pnpm lint` - [x] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md) Co-authored-by: Balázs Orbán <18369201+balazsorban44@users.noreply.github.com> --- errors/invalid-route-source.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/errors/invalid-route-source.md b/errors/invalid-route-source.md index c29c8610cf65c..0995c5714b5d1 100644 --- a/errors/invalid-route-source.md +++ b/errors/invalid-route-source.md @@ -2,12 +2,18 @@ #### Why This Error Occurred -When defining custom routes a route was added that causes an error during parsing. This can be due to trying to use normal `RegExp` syntax like negative lookaheads (`?!exclude`) without following `path-to-regexp`'s syntax for it. +When defining custom routes, or a middleware `matcher`, a pattern could not be parsed. + +This could have been due to trying to use normal `RegExp` syntax like negative lookaheads (`?!exclude`) without following [`path-to-regexp`](https://github.com/pillarjs/path-to-regexp)'s syntax for it. #### Possible Ways to Fix It Wrap the `RegExp` part of your `source` as an un-named parameter. +--- + +Custom routes: + **Before** ```js @@ -26,6 +32,26 @@ Wrap the `RegExp` part of your `source` as an un-named parameter. } ``` +--- + +Middleware: + +**Before** + +```js +const config = { + matcher: '/feedback/(?!general)', +} +``` + +**After** + +```js +const config = { + matcher: '/feedback/((?!general).*)', +} +``` + ### Useful Links - [path-to-regexp](https://github.com/pillarjs/path-to-regexp)