From 1cd48cbef943dc91416a8e71b3485f08091b35e3 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sun, 25 Jun 2023 17:40:30 +0100 Subject: [PATCH] fix(nuxt): escape colons in page paths (#21731) --- packages/nuxt/src/pages/utils.ts | 2 +- packages/nuxt/test/pages.test.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/nuxt/src/pages/utils.ts b/packages/nuxt/src/pages/utils.ts index 3f7a19d4d8..0663204749 100644 --- a/packages/nuxt/src/pages/utils.ts +++ b/packages/nuxt/src/pages/utils.ts @@ -104,7 +104,7 @@ function getRoutePath (tokens: SegmentToken[]): string { ? `:${token.value}()` : token.type === SegmentTokenType.catchall ? `:${token.value}(.*)*` - : encodePath(token.value)) + : encodePath(token.value).replace(/:/g, '\\:')) ) }, '/') } diff --git a/packages/nuxt/test/pages.test.ts b/packages/nuxt/test/pages.test.ts index 09b0cdae8e..b13c56a351 100644 --- a/packages/nuxt/test/pages.test.ts +++ b/packages/nuxt/test/pages.test.ts @@ -279,6 +279,20 @@ describe('pages:generateRoutesFromFiles', () => { children: [] } ] + }, + { + description: 'should allow pages with `:` in their path', + files: [ + `${pagesDir}/test:name.vue` + ], + output: [ + { + name: 'test:name', + path: '/test\\:name', + file: `${pagesDir}/test:name.vue`, + children: [] + } + ] } ]