From c08c77a8d9f0f23f349045db043549a8a76e2cb3 Mon Sep 17 00:00:00 2001 From: Kanta Kodama Date: Tue, 29 Dec 2020 22:14:18 +0900 Subject: [PATCH] Fix aspath for GIP --- .../next/next-server/server/next-server.ts | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/next/next-server/server/next-server.ts b/packages/next/next-server/server/next-server.ts index 3bbef11aa918..fefae576a641 100644 --- a/packages/next/next-server/server/next-server.ts +++ b/packages/next/next-server/server/next-server.ts @@ -1330,11 +1330,12 @@ export default class Server { typeof components.Component === 'object' && typeof (components.Component as any).renderReqToHTML === 'function' const isSSG = !!components.getStaticProps - const isServerProps = !!components.getServerSideProps + const hasServerProps = !!components.getServerSideProps const hasStaticPaths = !!components.getStaticPaths + const hasGetInitialProps = !!(components.Component as any).getInitialProps // Toggle whether or not this is a Data request - const isDataReq = !!query._nextDataReq && (isSSG || isServerProps) + const isDataReq = !!query._nextDataReq && (isSSG || hasServerProps) delete query._nextDataReq // we need to ensure the status code if /404 is visited directly @@ -1362,7 +1363,7 @@ export default class Server { let previewData: string | false | object | undefined let isPreviewMode = false - if (isServerProps || isSSG) { + if (hasServerProps || isSSG) { previewData = tryGetPreviewData(req, res, this.renderOpts.previewProps) isPreviewMode = previewData !== false } @@ -1584,17 +1585,18 @@ export default class Server { locale, locales, defaultLocale, - // For getServerSideProps we need to ensure we use the original URL + // For getServerSideProps and getInitialProps we need to ensure we use the original URL // and not the resolved URL to prevent a hydration mismatch on // asPath - resolvedAsPath: isServerProps - ? formatUrl({ - // we use the original URL pathname less the _next/data prefix if - // present - pathname: `${urlPathname}${hadTrailingSlash ? '/' : ''}`, - query: origQuery, - }) - : resolvedUrl, + resolvedAsPath: + hasServerProps || hasGetInitialProps + ? formatUrl({ + // we use the original URL pathname less the _next/data prefix if + // present + pathname: `${urlPathname}${hadTrailingSlash ? '/' : ''}`, + query: origQuery, + }) + : resolvedUrl, } renderResult = await renderToHTML( @@ -1701,7 +1703,7 @@ export default class Server { let resHtml = html const revalidateOptions = - !this.renderOpts.dev || (isServerProps && !isDataReq) + !this.renderOpts.dev || (hasServerProps && !isDataReq) ? { private: isPreviewMode, stateful: !isSSG, @@ -1712,7 +1714,7 @@ export default class Server { if ( !isResSent(res) && !isNotFound && - (isSSG || isDataReq || isServerProps) + (isSSG || isDataReq || hasServerProps) ) { if (isRedirect && !isDataReq) { await handleRedirect(pageData)