From 90e140c592e33c0c3fed3390dd0e31b0fe17fde6 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Tue, 20 Feb 2024 09:26:49 +0000 Subject: [PATCH] Make the `getRequestContext`'s error message more helpful during local development (#669) --- .changeset/beige-ducks-glow.md | 9 +++++++++ .../src/api/getRequestContext.ts | 20 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 .changeset/beige-ducks-glow.md diff --git a/.changeset/beige-ducks-glow.md b/.changeset/beige-ducks-glow.md new file mode 100644 index 000000000..946e5c903 --- /dev/null +++ b/.changeset/beige-ducks-glow.md @@ -0,0 +1,9 @@ +--- +'@cloudflare/next-on-pages': patch +--- + +Make the `getRequestContext`'s error message more helpful during local development + +During local development add information in the `getRequestContext`'s error +message reminding the user to setup the dev platform via `setupDevPlatform` +in their config file diff --git a/packages/next-on-pages/src/api/getRequestContext.ts b/packages/next-on-pages/src/api/getRequestContext.ts index a0238bd50..c59ecadbe 100644 --- a/packages/next-on-pages/src/api/getRequestContext.ts +++ b/packages/next-on-pages/src/api/getRequestContext.ts @@ -1,4 +1,5 @@ import 'server-only'; +import dedent from 'dedent-tabs'; declare global { // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -43,7 +44,24 @@ export function getRequestContext< >(); if (!cloudflareRequestContext) { - throw new Error('Error: failed to retrieve the Cloudflare request context'); + let errorMessage = 'Failed to retrieve the Cloudflare request context.'; + + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + if (process.env.NODE_ENV === 'development') { + errorMessage += + '\n\n' + + dedent` + For local development (using the Next.js dev server) remember to include + a call to the \`setupDevPlatform\` function in your config file. + + For more details visit: + https://github.com/cloudflare/next-on-pages/tree/3846730c/internal-packages/next-dev + ` + + '\n\n'; + } + + throw new Error(errorMessage); } return cloudflareRequestContext;