diff --git a/packages/next/build/webpack/loaders/next-serverless-loader.ts b/packages/next/build/webpack/loaders/next-serverless-loader.ts index 634b09a4d927e26..4948c38d3735cc5 100644 --- a/packages/next/build/webpack/loaders/next-serverless-loader.ts +++ b/packages/next/build/webpack/loaders/next-serverless-loader.ts @@ -216,13 +216,14 @@ const nextServerlessLoader: loader.Loader = function() { } let _nextData = false - if (req.url.match(/_next\\/data/)) { + const parsedUrl = handleRewrites(parse(req.url, true)) + + if (parsedUrl.pathname.match(/_next\\/data/)) { _nextData = true - req.url = req.url + parsedUrl.pathname = parsedUrl.pathname .replace(new RegExp('/_next/data/${escapedBuildId}/'), '/') .replace(/\\.json$/, '') } - const parsedUrl = handleRewrites(parse(req.url, true)) const renderOpts = Object.assign( { diff --git a/test/integration/prerender/test/index.test.js b/test/integration/prerender/test/index.test.js index d1ecf0f574a2510..a6ff7e056ba6858 100644 --- a/test/integration/prerender/test/index.test.js +++ b/test/integration/prerender/test/index.test.js @@ -265,6 +265,16 @@ const runTests = (dev = false) => { expect(JSON.parse(params)).toEqual({}) }) + it('should not supply query values to params in /_next/data request', async () => { + const data = JSON.parse( + await renderViaHTTP( + appPort, + `/_next/data/${buildId}/something.json?hello=world` + ) + ) + expect(data.pageProps.params).toEqual({}) + }) + it('should not supply query values to params or useRouter dynamic page SSR', async () => { const html = await renderViaHTTP(appPort, '/blog/post-1?hello=world') const $ = cheerio.load(html) @@ -580,7 +590,7 @@ describe('SPR Prerender', () => { await nextBuild(appDir) stderr = '' appPort = await findPort() - app = nextStart(appDir, appPort, { + app = await nextStart(appDir, appPort, { onStderr: msg => { stderr += msg },