feat: better error messages#16374
Conversation
…ender stack traces
|
Install the latest version of pnpm add https://pkg.svelte.dev/@sveltejs/kit/c/6b22cd74dce64b0ba787aa32e909722f33d55a6bOpen in |
🦋 Changeset detectedLatest commit: 6b22cd7 The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
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 |
…n using node's styleText(...)
|
I would like to get sourcemaps working in production too, but will do that in a follow-up rather than keeping adding to this PR |
| end = i + 1; | ||
| } | ||
|
|
||
| return line.replace(file, path.posix.relative(process.cwd(), file)); |
There was a problem hiding this comment.
Does this break on Windows if the paths printed are Windows-style?
Also, does it matter if this is process.cwd() rather than the Vite root?
There was a problem hiding this comment.
errr... yes, the posix might be leftover from debugging. lemme open a PR without it and see if it passes CI.
the paths should be relative to the cwd rather than the root — that's what makes them cmd-clickable in your terminal despite not being absolute
Follow-up to #16374. Wanted to do this for a long time. Slightly experimental — anything sourcemap-related always needs battle-testing — but I'm reasonably sure it won't do any harm in cases where it doesn't work perfectly. Whereas #16374 made sourcemaps work during prerendering, this makes them work in production generally, which includes prerendering and `vite preview`. It applies three changes: - it traces locations back to the source on a best-effort basis - it makes paths relative to the cwd — much shorter and more readable, but still cmd-clickable - it truncates the framework's internal stack frames from the bottom Additionally, it configures Vite to generate sourcemaps for the server build (but allows that config to be overwritten, if someone really doesn't want sourcemaps for whatever reason). This is `vite preview` on `version-3`... <img width="1379" height="260" alt="image" src="https://github.com/user-attachments/assets/ebdab846-2beb-4e3b-83e2-0f3527078055" /> ...and this is on this branch: <img width="577" height="116" alt="image" src="https://github.com/user-attachments/assets/d4e4810b-5cd4-4044-bf35-4a3f33d7d38c" /> It's not bulletproof. Taking `adapter-node` as an example, if the emitted `build` directory was deployed without the `.svelte-kit` directory alongside it, it wouldn't be able to trace all the way back to the source. For that to happen, we would need to do something like add a method on `builder` that bundled the sourcemaps, or moved (and adjusted) them to a new location that _could_ be shipped with the build. Similarly if an adapter moves files around, or does an additional bundling step _without_ generating sourcemaps, there's not much we can do. But these are fixable things that we can address once this layer is in place, and we shouldn't let perfect be the enemy of the good. --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [ ] 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. - [ ] 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. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Co-authored-by: Tee Ming <[email protected]>
tiny fix which should have been part of #16374 — we don't need to log responses multiple times. will self-merge once green
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to version-3, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `version-3` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `version-3`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## @sveltejs/[email protected] ### Major Changes - breaking: `config` exported from a universal route file takes precedence over a server one ([#16400](#16400)) - breaking: consistent special filename patterns ([#16382](#16382)) ### Minor Changes - feat: support sourcemaps in production ([#16412](#16412)) - feat: support function validators for environment variables ([#16402](#16402)) - feat: better error logging ([#16374](#16374)) ### Patch Changes - fix: don't treat callable standard schemas as function param matchers ([#16403](#16403)) - fix: reject malformed streamed data encoding ([#16423](#16423)) - fix: hide stack traces for internal errors like 404s ([#16411](#16411)) - perf: match only unpaired surrogates when escaping HTML ([#16407](#16407)) - fix: don't report empty environment variables as missing ([#16401](#16401)) - chore: clarify which hooks run during server route resolution ([#16397](#16397)) ## @sveltejs/[email protected] ### Minor Changes - feat: better error logging ([#16374](#16374)) ### Patch Changes - Updated dependencies [[`5220191`](5220191), [`8cb2f7d`](8cb2f7d), [`b88c7a7`](b88c7a7), [`a6ea113`](a6ea113), [`6446f64`](6446f64), [`58f1789`](58f1789), [`09774a2`](09774a2), [`c542fdd`](c542fdd), [`aedaa27`](aedaa27), [`428ee1a`](428ee1a), [`fefb3ae`](fefb3ae)]: - @sveltejs/[email protected] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
closes #11291
This makes the error messages more useful in a couple of contexts:
Error messages are not yet super nicely formatted, so this is one thing that can still be improved.