fix: don't mask errors with a "header is already set" error when rendering the error page#16323
Open
Nic-Polumeyv wants to merge 1 commit into
Open
fix: don't mask errors with a "header is already set" error when rendering the error page#16323Nic-Polumeyv wants to merge 1 commit into
Nic-Polumeyv wants to merge 1 commit into
Conversation
|
Install the latest version of pnpm add https://pkg.svelte.dev/@sveltejs/kit/c/5767856a7c6f50253ce3c79fe355e0c17fdfd639Open in Note This PR is from a fork. A maintainer must approve approve each commit before it can be built and installed. |
🦋 Changeset detectedLatest commit: 5767856 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
If the root layout
loadcallssetHeadersand something throws while the page renders, the error page dies too.respond_with_errorre-runs the root layoutloadon the same event, so the secondsetHeaderscall hits the set-once check and throws"cache-control" header is already set. That error replaces the real one inhandle_error_and_jsonify, so the log shows only thesetHeaderscomplaint and the response falls back to the static error page instead of+error.svelte.The set-once throw is by design (#5778), so it stays for normal rendering. The fix skips duplicate keys only while the error page renders (
state.error), keeping the value from the original render. Same load, same request, so the values are identical anyway. #14681 already carvedserver-timingout of this throw.loaderrors take the nearest-boundary path without re-running the root layout, so the test throws during SSR render instead. The basics root layout sets the header only for the test route (existinglocals.urlpattern), keeping every other test response unchanged. Fails on main, passes with the fix, in both dev and build.The
server-timingappend would double up during the re-run. That predates this change, so I left it.Fixes #11676
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
Tests
pnpm testand lint the project withpnpm lintandpnpm checkChangesets
pnpm changesetand following the prompts. Changesets that add features should beminorand those that fix bugs should bepatch. Please prefix changeset messages withfeat:,fix:, orchore:.Edits