Skip to content

Commit d875c0c

Browse files
committed
Align recoverable error serialization in dev mode
1 parent a7144f2 commit d875c0c

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

packages/react-server/src/ReactFizzServer.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import type {ComponentStackNode} from './ReactFizzComponentStack';
3333
import type {TreeContext} from './ReactFizzTreeContext';
3434
import type {ThenableState} from './ReactFizzThenable';
3535
import {enableRenderableContext} from 'shared/ReactFeatureFlags';
36+
import {describeObjectForErrorMessage} from 'shared/ReactSerializationErrors';
3637

3738
import {
3839
scheduleWork,
@@ -816,18 +817,19 @@ function encodeErrorForBoundary(
816817
) {
817818
boundary.errorDigest = digest;
818819
if (__DEV__) {
820+
let message;
819821
// In dev we additionally encode the error message and component stack on the boundary
820-
let errorMessage;
821-
if (typeof error === 'string') {
822-
errorMessage = error;
823-
} else if (error && typeof error.message === 'string') {
824-
errorMessage = error.message;
822+
if (error instanceof Error) {
823+
// eslint-disable-next-line react-internal/safe-string-coercion
824+
message = String(error.message);
825+
} else if (typeof error === 'object' && error !== null) {
826+
message = 'Error: ' + describeObjectForErrorMessage(error);
825827
} else {
826828
// eslint-disable-next-line react-internal/safe-string-coercion
827-
errorMessage = String(error);
829+
message = 'Error: ' + String(error);
828830
}
829831

830-
boundary.errorMessage = errorMessage;
832+
boundary.errorMessage = message;
831833
boundary.errorComponentStack = thrownInfo.componentStack;
832834
}
833835
}

0 commit comments

Comments
 (0)