diff --git a/packages/react-client/src/ReactFlightReplyClient.js b/packages/react-client/src/ReactFlightReplyClient.js index ff80f4b310..c4033a999d 100644 --- a/packages/react-client/src/ReactFlightReplyClient.js +++ b/packages/react-client/src/ReactFlightReplyClient.js @@ -692,7 +692,8 @@ export function processReply( if (temporaryReferences === undefined) { throw new Error( 'Only plain objects, and a few built-ins, can be passed to Server Actions. ' + - 'Classes or null prototypes are not supported.', + 'Classes or null prototypes are not supported.' + + (__DEV__ ? describeObjectForErrorMessage(parent, key) : ''), ); } // We will have written this object to the temporary reference set above diff --git a/packages/react-client/src/__tests__/ReactFlight-test.js b/packages/react-client/src/__tests__/ReactFlight-test.js index 11969871a9..77bc717874 100644 --- a/packages/react-client/src/__tests__/ReactFlight-test.js +++ b/packages/react-client/src/__tests__/ReactFlight-test.js @@ -1482,7 +1482,10 @@ describe('ReactFlight', () => { expect(errors).toEqual([ 'Only plain objects, and a few built-ins, can be passed to Client Components ' + - 'from Server Components. Classes or null prototypes are not supported.', + 'from Server Components. Classes or null prototypes are not supported.' + + (__DEV__ + ? '\n' + ' \n' + ' ^^^^' + : '\n' + ' {value: {}}\n' + ' ^^'), ]); }); diff --git a/packages/react-server/src/ReactFlightServer.js b/packages/react-server/src/ReactFlightServer.js index 30a8ece0ad..dd279943b6 100644 --- a/packages/react-server/src/ReactFlightServer.js +++ b/packages/react-server/src/ReactFlightServer.js @@ -2615,7 +2615,8 @@ function renderModelDestructive( ) { throw new Error( 'Only plain objects, and a few built-ins, can be passed to Client Components ' + - 'from Server Components. Classes or null prototypes are not supported.', + 'from Server Components. Classes or null prototypes are not supported.' + + describeObjectForErrorMessage(parent, parentPropertyName), ); } if (__DEV__) { diff --git a/scripts/error-codes/codes.json b/scripts/error-codes/codes.json index 088bd5b33b..ff87311764 100644 --- a/scripts/error-codes/codes.json +++ b/scripts/error-codes/codes.json @@ -483,8 +483,8 @@ "495": "Cannot taint a %s because the value is too general and not unique enough to block globally.", "496": "Only objects or functions can be passed to taintObjectReference. Try taintUniqueValue instead.", "497": "Only objects or functions can be passed to taintObjectReference.", - "498": "Only plain objects, and a few built-ins, can be passed to Client Components from Server Components. Classes or null prototypes are not supported.", - "499": "Only plain objects, and a few built-ins, can be passed to Server Actions. Classes or null prototypes are not supported.", + "498": "Only plain objects, and a few built-ins, can be passed to Client Components from Server Components. Classes or null prototypes are not supported.%s", + "499": "Only plain objects, and a few built-ins, can be passed to Server Actions. Classes or null prototypes are not supported.%s", "500": "React expected a headers state to exist when emitEarlyPreloads was called but did not find it. This suggests emitEarlyPreloads was called more than once per request. This is a bug in React.", "501": "The render was aborted with postpone when the shell is incomplete. Reason: %s", "502": "Cannot read a Client Context from a Server Component.",