kit icon indicating copy to clipboard operation
kit copied to clipboard

[fix] handle redirects in handle hook while processing data request

Open dummdidumm opened this issue 3 years ago • 2 comments

Fixes #7787

During fixing this, I wondered why the tests also pass without the fix, and discovered that this specific behavior will only occur if there's no root +layout.server.js (because then it wouldn't try to rerequest the data, failing again, resulting in a fallback to the server where the redirect would be handled correctly), which we have in the tests. I'm not sure if it's worth creating another test suite for this, so I left it like this.

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

  • [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • [x] This message body should clearly illustrate what problems it solves.
  • [x] Ideally, include a test that fails without this PR but passes with it.

Tests

  • [x] Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

  • [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. All changesets should be patch until SvelteKit 1.0

dummdidumm avatar Nov 24 '22 11:11 dummdidumm

🦋 Changeset detected

Latest commit: 6089d13cb4ed206194cacf55148c0db391ebe9ea

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@sveltejs/kit Patch

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

changeset-bot[bot] avatar Nov 24 '22 11:11 changeset-bot[bot]

Reading this surprised me, because I found this issue in a project that had +layout.server.js. After some tests I here's what I found:

  • if you redirect in hooks.server.js and you don't have +layout.server.js, kit will load that route. If you have +page.server.js in that route, it will fail with a 500 error.
  • if you have +layout.server.js, the redirect will work.
  • but then if you don't have +page.server.js, the redirect won't work.
    • if you have a +page.js that fetches some stuff from an endpoint (which you may also be blocking with hooks) that fails, the page will fail with a 500 error.
    • if you don't have that, the page will display as normal, even though it shouldn't.

styxpilled avatar Nov 25 '22 17:11 styxpilled