From 1a42d02d678f8c0d1fbd4cf0dd4409ced94a249d Mon Sep 17 00:00:00 2001 From: "Jon K. Wheeler" Date: Mon, 28 Jul 2025 12:09:57 -0400 Subject: [PATCH 1/4] return res.statusCode on "Server failed to respond." --- packages/open-next/src/core/requestHandler.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/open-next/src/core/requestHandler.ts b/packages/open-next/src/core/requestHandler.ts index 43067e812..08d3178cb 100644 --- a/packages/open-next/src/core/requestHandler.ts +++ b/packages/open-next/src/core/requestHandler.ts @@ -345,6 +345,8 @@ async function tryRenderError( await requestHandler(requestMetadata)(_req, res); } catch (e) { error("NextJS request failed.", e); + const statusCode = type === "404" ? 404 : 500; + res.statusCode = statusCode; res.setHeader("Content-Type", "application/json"); res.end( JSON.stringify( From f51aec8c2d20ce7ee0822407a2cbe0dbe1ee9c36 Mon Sep 17 00:00:00 2001 From: "Jon K. Wheeler" Date: Mon, 28 Jul 2025 12:22:41 -0400 Subject: [PATCH 2/4] apply micro-optimization, pull this out into a constant above the try/catch --- packages/open-next/src/core/requestHandler.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/open-next/src/core/requestHandler.ts b/packages/open-next/src/core/requestHandler.ts index 08d3178cb..4a7a221c7 100644 --- a/packages/open-next/src/core/requestHandler.ts +++ b/packages/open-next/src/core/requestHandler.ts @@ -327,6 +327,7 @@ async function tryRenderError( res: OpenNextNodeResponse, internalEvent: InternalEvent, ) { + const statusCode = type === "404" ? 404 : 500; try { const _req = new IncomingMessage({ method: "GET", @@ -338,14 +339,13 @@ async function tryRenderError( // By setting this it will allow us to bypass and directly render the 404 or 500 page const requestMetadata = { // By setting invokePath and invokeQuery we can bypass some of the routing logic in Next.js - invokePath: type === "404" ? "/404" : "/500", - invokeStatus: type === "404" ? 404 : 500, + invokePath: `/${statusCode}`, + invokeStatus: statusCode, middlewareInvoke: false, }; await requestHandler(requestMetadata)(_req, res); } catch (e) { error("NextJS request failed.", e); - const statusCode = type === "404" ? 404 : 500; res.statusCode = statusCode; res.setHeader("Content-Type", "application/json"); res.end( From 01c5a711d6041d7b744237b5133247f69e165a70 Mon Sep 17 00:00:00 2001 From: "Jon K. Wheeler" Date: Mon, 28 Jul 2025 12:44:31 -0400 Subject: [PATCH 3/4] hardcode as a 500 --- packages/open-next/src/core/requestHandler.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/open-next/src/core/requestHandler.ts b/packages/open-next/src/core/requestHandler.ts index 4a7a221c7..3ee1fc89e 100644 --- a/packages/open-next/src/core/requestHandler.ts +++ b/packages/open-next/src/core/requestHandler.ts @@ -327,7 +327,6 @@ async function tryRenderError( res: OpenNextNodeResponse, internalEvent: InternalEvent, ) { - const statusCode = type === "404" ? 404 : 500; try { const _req = new IncomingMessage({ method: "GET", @@ -339,14 +338,14 @@ async function tryRenderError( // By setting this it will allow us to bypass and directly render the 404 or 500 page const requestMetadata = { // By setting invokePath and invokeQuery we can bypass some of the routing logic in Next.js - invokePath: `/${statusCode}`, - invokeStatus: statusCode, + invokePath: type === "404" ? "/404" : "/500", + invokeStatus: type === "404" ? 404 : 500, middlewareInvoke: false, }; await requestHandler(requestMetadata)(_req, res); } catch (e) { error("NextJS request failed.", e); - res.statusCode = statusCode; + res.statusCode = 500; res.setHeader("Content-Type", "application/json"); res.end( JSON.stringify( From 330b1275f0f2688b53b569cc43becd5e39f68bac Mon Sep 17 00:00:00 2001 From: conico974 Date: Tue, 29 Jul 2025 13:54:37 +0200 Subject: [PATCH 4/4] Create pretty-dodos-end.md --- .changeset/pretty-dodos-end.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/pretty-dodos-end.md diff --git a/.changeset/pretty-dodos-end.md b/.changeset/pretty-dodos-end.md new file mode 100644 index 000000000..c997ba36e --- /dev/null +++ b/.changeset/pretty-dodos-end.md @@ -0,0 +1,5 @@ +--- +"@opennextjs/aws": patch +--- + +set the correct 500 status code on internal server error