From 14ddb87c311ff3280dde0ae44b0a0d864ec26353 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Sun, 2 Jun 2024 16:06:16 +0100 Subject: [PATCH] fix: assign message to error object in handle_error using Object.assign (#11675) * fix: avoid writing to not writable error object in handle_error * feedback * feedback * Update packages/svelte/src/internal/client/runtime.js Co-authored-by: Rich Harris * Update .changeset/shiny-pillows-relax.md Co-authored-by: Rich Harris * Update packages/svelte/src/internal/client/runtime.js Co-authored-by: Rich Harris * Update packages/svelte/src/internal/client/runtime.js Co-authored-by: Rich Harris * Update packages/svelte/src/internal/client/runtime.js --------- Co-authored-by: Rich Harris --- .changeset/shiny-pillows-relax.md | 5 +++++ packages/svelte/src/internal/client/runtime.js | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 .changeset/shiny-pillows-relax.md diff --git a/.changeset/shiny-pillows-relax.md b/.changeset/shiny-pillows-relax.md new file mode 100644 index 0000000000..15286e12c0 --- /dev/null +++ b/.changeset/shiny-pillows-relax.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: assign message to error object in `handle_error` using `Object.defineProperty` diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index 3e3206ad66..92a13dc6d4 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -311,7 +311,9 @@ function handle_error(error, effect, component_context) { } const indent = /Firefox/.test(navigator.userAgent) ? ' ' : '\t'; - error.message += `\n${component_stack.map((name) => `\n${indent}in ${name}`).join('')}\n`; + define_property(error, 'message', { + value: error.message + `\n${component_stack.map((name) => `\n${indent}in ${name}`).join('')}\n` + }); const stack = error.stack; @@ -326,7 +328,9 @@ function handle_error(error, effect, component_context) { } new_lines.push(line); } - error.stack = new_lines.join('\n'); + define_property(error, 'stack', { + value: error.stack + new_lines.join('\n') + }); } handled_errors.add(error);