From 2be7eafe3c115d56d993dbda64d320550712df1f Mon Sep 17 00:00:00 2001 From: ArioA Date: Mon, 16 Oct 2023 16:01:28 +0100 Subject: [PATCH] Don't crash if some (but not all) Error Codes are loaded (#11291) Co-authored-by: Lenz Weber-Tronic --- .changeset/heavy-camels-double.md | 5 +++++ src/dev/loadErrorMessageHandler.ts | 2 +- .../__tests__/invariantWrappers.test.ts | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .changeset/heavy-camels-double.md diff --git a/.changeset/heavy-camels-double.md b/.changeset/heavy-camels-double.md new file mode 100644 index 00000000000..d236122b255 --- /dev/null +++ b/.changeset/heavy-camels-double.md @@ -0,0 +1,5 @@ +--- +"@apollo/client": patch +--- + +Fix a bug that allows to only call `loadErrorMessages` without also calling `loadDevErrorMessages`. diff --git a/src/dev/loadErrorMessageHandler.ts b/src/dev/loadErrorMessageHandler.ts index 199a6477b5c..ad18c159ed5 100644 --- a/src/dev/loadErrorMessageHandler.ts +++ b/src/dev/loadErrorMessageHandler.ts @@ -16,7 +16,7 @@ export function loadErrorMessageHandler(...errorCodes: ErrorCodes[]) { function handler(message: string | number, args: unknown[]) { if (typeof message === "number") { const definition = global[ApolloErrorMessageHandler]![message]; - if (!message || !definition.message) return; + if (!message || !definition?.message) return; message = definition.message; } return args.reduce( diff --git a/src/utilities/globals/__tests__/invariantWrappers.test.ts b/src/utilities/globals/__tests__/invariantWrappers.test.ts index f9255c170c8..2b750c534ed 100644 --- a/src/utilities/globals/__tests__/invariantWrappers.test.ts +++ b/src/utilities/globals/__tests__/invariantWrappers.test.ts @@ -99,3 +99,21 @@ test("invariant.log(5, ...), with handlers", () => { { a: 1 } ); }); + +test("base invariant(false, 6, ...), raises fallback", () => { + using _ = mockErrorMessageHandler(); + expect(() => { + invariant(false, 6, "hello"); + }).toThrow( + new InvariantError( + "An error occurred! For more details, see the full error text at https://go.apollo.dev/c/err#" + + encodeURIComponent( + JSON.stringify({ + version: "local", + message: 6, + args: ["hello"], + }) + ) + ) + ); +});