From 220bed00e61f55f650a394a4a4860881774a13ba Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 3 May 2022 16:58:46 -0500 Subject: [PATCH 1/4] Update renderOpts.dev handling and fix check --- packages/next/server/base-server.ts | 1 + packages/next/server/dev/next-dev-server.ts | 1 - packages/next/server/next-server.ts | 18 +++++++++++------- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/next/server/base-server.ts b/packages/next/server/base-server.ts index 73a8413f9410..9c94ba19007d 100644 --- a/packages/next/server/base-server.ts +++ b/packages/next/server/base-server.ts @@ -341,6 +341,7 @@ export default abstract class Server { ? this.nextConfig.crossOrigin : undefined, reactRoot: this.nextConfig.experimental.reactRoot === true, + dev, } // Only the `publicRuntimeConfig` key is exposed to the client side diff --git a/packages/next/server/dev/next-dev-server.ts b/packages/next/server/dev/next-dev-server.ts index 3a855aa3c624..8bd8a525856b 100644 --- a/packages/next/server/dev/next-dev-server.ts +++ b/packages/next/server/dev/next-dev-server.ts @@ -139,7 +139,6 @@ export default class DevServer extends Server { constructor(options: Options) { super({ ...options, dev: true }) - this.renderOpts.dev = true ;(this.renderOpts as any).ErrorDebug = ReactDevOverlay this.devReady = new Promise((resolve) => { this.setDevReady = resolve diff --git a/packages/next/server/next-server.ts b/packages/next/server/next-server.ts index d0b527aea940..0cf33ebf44ef 100644 --- a/packages/next/server/next-server.ts +++ b/packages/next/server/next-server.ts @@ -126,15 +126,19 @@ export default class NextNodeServer extends BaseServer { ) } - if (!this.renderOpts.dev) { + if (!options.dev) { // pre-warm _document and _app as these will be // needed for most requests - loadComponents(this.distDir, '/_document', this._isLikeServerless).catch( - () => {} - ) - loadComponents(this.distDir, '/_app', this._isLikeServerless).catch( - () => {} - ) + try { + loadComponents( + this.distDir, + '/_document', + this._isLikeServerless + ).catch(() => {}) + loadComponents(this.distDir, '/_app', this._isLikeServerless).catch( + () => {} + ) + } catch (_) {} } } From a9b0cda62c190a7eb6551dcd40f3f283b3835611 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 3 May 2022 17:47:01 -0500 Subject: [PATCH 2/4] Update awaiting in load-components --- packages/next/server/load-components.ts | 12 ++++++++---- packages/next/server/next-server.ts | 16 ++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/next/server/load-components.ts b/packages/next/server/load-components.ts index 862834e523f2..417dded6f82f 100644 --- a/packages/next/server/load-components.ts +++ b/packages/next/server/load-components.ts @@ -111,11 +111,15 @@ export async function loadComponents( } const [DocumentMod, AppMod, ComponentMod, AppServerMod] = await Promise.all([ - requirePage('/_document', distDir, serverless, rootEnabled), - requirePage('/_app', distDir, serverless, rootEnabled), - requirePage(pathname, distDir, serverless, rootEnabled), + Promise.resolve().then(() => + requirePage('/_document', distDir, serverless) + ), + Promise.resolve().then(() => requirePage('/_app', distDir, serverless)), + Promise.resolve().then(() => requirePage(pathname, distDir, serverless)), serverComponents - ? requirePage('/_app.server', distDir, serverless, rootEnabled) + ? Promise.resolve().then(() => + requirePage('/_app.server', distDir, serverless) + ) : null, ]) diff --git a/packages/next/server/next-server.ts b/packages/next/server/next-server.ts index 0cf33ebf44ef..498fdd98cb88 100644 --- a/packages/next/server/next-server.ts +++ b/packages/next/server/next-server.ts @@ -129,16 +129,12 @@ export default class NextNodeServer extends BaseServer { if (!options.dev) { // pre-warm _document and _app as these will be // needed for most requests - try { - loadComponents( - this.distDir, - '/_document', - this._isLikeServerless - ).catch(() => {}) - loadComponents(this.distDir, '/_app', this._isLikeServerless).catch( - () => {} - ) - } catch (_) {} + loadComponents(this.distDir, '/_document', this._isLikeServerless).catch( + () => {} + ) + loadComponents(this.distDir, '/_app', this._isLikeServerless).catch( + () => {} + ) } } From 60f696ed74bbd522a9ae14ac22d297db9be7830c Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 3 May 2022 18:08:52 -0500 Subject: [PATCH 3/4] extra arg --- packages/next/server/load-components.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/next/server/load-components.ts b/packages/next/server/load-components.ts index 417dded6f82f..75fc94bfc7e4 100644 --- a/packages/next/server/load-components.ts +++ b/packages/next/server/load-components.ts @@ -112,13 +112,17 @@ export async function loadComponents( const [DocumentMod, AppMod, ComponentMod, AppServerMod] = await Promise.all([ Promise.resolve().then(() => - requirePage('/_document', distDir, serverless) + requirePage('/_document', distDir, serverless, rootEnabled) + ), + Promise.resolve().then(() => + requirePage('/_app', distDir, serverless, rootEnabled) + ), + Promise.resolve().then(() => + requirePage(pathname, distDir, serverless, rootEnabled) ), - Promise.resolve().then(() => requirePage('/_app', distDir, serverless)), - Promise.resolve().then(() => requirePage(pathname, distDir, serverless)), serverComponents ? Promise.resolve().then(() => - requirePage('/_app.server', distDir, serverless) + requirePage('/_app.server', distDir, serverless, rootEnabled) ) : null, ]) From 396e8595ee74c911ce3a34c7bb64e134e4c7ae58 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 3 May 2022 23:21:04 -0500 Subject: [PATCH 4/4] fix streaming case --- .../build/webpack/loaders/next-middleware-ssr-loader/render.ts | 1 + packages/next/server/base-server.ts | 1 - packages/next/server/dev/next-dev-server.ts | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/next/build/webpack/loaders/next-middleware-ssr-loader/render.ts b/packages/next/build/webpack/loaders/next-middleware-ssr-loader/render.ts index 341334e3d4d5..e186b66087d2 100644 --- a/packages/next/build/webpack/loaders/next-middleware-ssr-loader/render.ts +++ b/packages/next/build/webpack/loaders/next-middleware-ssr-loader/render.ts @@ -54,6 +54,7 @@ export function getRender({ } const server = new WebServer({ + dev, conf: config, minimalMode: true, webServerConfig: { diff --git a/packages/next/server/base-server.ts b/packages/next/server/base-server.ts index 9c94ba19007d..73a8413f9410 100644 --- a/packages/next/server/base-server.ts +++ b/packages/next/server/base-server.ts @@ -341,7 +341,6 @@ export default abstract class Server { ? this.nextConfig.crossOrigin : undefined, reactRoot: this.nextConfig.experimental.reactRoot === true, - dev, } // Only the `publicRuntimeConfig` key is exposed to the client side diff --git a/packages/next/server/dev/next-dev-server.ts b/packages/next/server/dev/next-dev-server.ts index 8bd8a525856b..3a855aa3c624 100644 --- a/packages/next/server/dev/next-dev-server.ts +++ b/packages/next/server/dev/next-dev-server.ts @@ -139,6 +139,7 @@ export default class DevServer extends Server { constructor(options: Options) { super({ ...options, dev: true }) + this.renderOpts.dev = true ;(this.renderOpts as any).ErrorDebug = ReactDevOverlay this.devReady = new Promise((resolve) => { this.setDevReady = resolve