From 84af122d04381eb735a5f0ab7114fbde7aa9bad3 Mon Sep 17 00:00:00 2001 From: samueldusek Date: Mon, 4 Apr 2022 21:00:26 +0200 Subject: [PATCH] Update: Add appropriate error message when for getServerSideProps invalid return value --- ...invalid-getserversideprops-return-value.md | 21 +++++++++++++++++++ errors/manifest.json | 4 ++++ packages/next/server/render.tsx | 9 ++++++-- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 errors/invalid-getserversideprops-return-value.md diff --git a/errors/invalid-getserversideprops-return-value.md b/errors/invalid-getserversideprops-return-value.md new file mode 100644 index 000000000000000..8a05d9d5d635b2e --- /dev/null +++ b/errors/invalid-getserversideprops-return-value.md @@ -0,0 +1,21 @@ +# Invalid getServerSideProps Return Value + +#### Why This Error Occurred + +In one of the page's `getServerSideProps` the return value had the incorrect shape. + +#### Possible Ways to Fix It + +Make sure to return the following shape from `getServerSideProps`: + +```ts +export async function getServerSideProps(ctx: GetServerSidePropsContext) { + return { + props: { [key: string]: any } + } +} +``` + +### Useful Links + +- [getServerSideProps](https://nextjs.org/docs/api-reference/data-fetching/get-server-side-props) diff --git a/errors/manifest.json b/errors/manifest.json index ae234227e64723d..0353a5eab1c688d 100644 --- a/errors/manifest.json +++ b/errors/manifest.json @@ -641,6 +641,10 @@ { "title": "client-flush-effects", "path": "/errors/client-flush-effects.md" + }, + { + "title": "invalid-getserversideprops-return-value", + "path": "/errors/invalid-getserversideprops-return-value.md" } ] } diff --git a/packages/next/server/render.tsx b/packages/next/server/render.tsx index 4dac851e600f8b2..35813aee4cfcb53 100644 --- a/packages/next/server/render.tsx +++ b/packages/next/server/render.tsx @@ -250,12 +250,17 @@ export type RenderOptsPartial = { export type RenderOpts = LoadComponentsReturnType & RenderOptsPartial -const invalidKeysMsg = (methodName: string, invalidKeys: string[]) => { +const invalidKeysMsg = ( + methodName: 'getServerSideProps' | 'getStaticProps', + invalidKeys: string[] +) => { + const docsPathname = `invalid-${methodName.toLocaleLowerCase()}-value` + return ( `Additional keys were returned from \`${methodName}\`. Properties intended for your component must be nested under the \`props\` key, e.g.:` + `\n\n\treturn { props: { title: 'My Title', content: '...' } }` + `\n\nKeys that need to be moved: ${invalidKeys.join(', ')}.` + - `\nRead more: https://nextjs.org/docs/messages/invalid-getstaticprops-value` + `\nRead more: https://nextjs.org/docs/messages/${docsPathname}` ) }