diff --git a/packages/serverless-nextjs-plugin/classes/NextPage.js b/packages/serverless-nextjs-plugin/classes/NextPage.js index a83ba387ce..5b869fd15b 100644 --- a/packages/serverless-nextjs-plugin/classes/NextPage.js +++ b/packages/serverless-nextjs-plugin/classes/NextPage.js @@ -82,7 +82,12 @@ class NextPage { .slice(buildDirIndex + 1, pathSegments.length - 1) .concat([this.pageName]); - return routeSegments.join("/"); + const originalPath = routeSegments.join("/"); + const pathWithReplacedBrackets = originalPath + .replace(/\[/g, "{") + .replace(/\]/g, "}"); + + return pathWithReplacedBrackets; } } diff --git a/packages/serverless-nextjs-plugin/classes/__tests__/NextPage.test.js b/packages/serverless-nextjs-plugin/classes/__tests__/NextPage.test.js index 2f7b9f5c4d..44bc163161 100644 --- a/packages/serverless-nextjs-plugin/classes/__tests__/NextPage.test.js +++ b/packages/serverless-nextjs-plugin/classes/__tests__/NextPage.test.js @@ -338,6 +338,23 @@ describe("NextPage", () => { }); }); + describe("When dynamic route with square brackets is defined", () => { + const buildDir = PluginBuildDir.BUILD_DIR_NAME; + const pagePath = `${buildDir}/[id].js`; + let page; + + beforeEach(() => { + page = new NextPage(pagePath, { + serverlessFunctionOverrides: {}, + routes: [] + }); + }); + + it("replaces square brackets with curly brackets", () => { + expect(page.pageRoute).toEqual("{id}"); + }); + }); + describe("When custom routes are provided", () => { let pageWithCustomRoutes;