Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better effect stack logging #13256

Open
Rich-Harris opened this issue Sep 15, 2024 · 2 comments · May be fixed by #13344
Open

Better effect stack logging #13256

Rich-Harris opened this issue Sep 15, 2024 · 2 comments · May be fixed by #13344
Milestone

Comments

@Rich-Harris
Copy link
Member

Describe the problem

See #13231 (comment)

Describe the proposed solution

Attach location information to effects in development, so that it can be used when generating the error message. For simple cases where there's only a single effect involved we can do this sort of thing:

Uncaught Svelte error: effect_update_depth_exceeded
Maximum update depth exceeded in App.svelte:3:1. This can happen when a reactive block or effect repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops

If there are multiple effects running in a loop, the message could be more like this...

Uncaught Svelte error: effect_update_depth_exceeded
Maximum update depth exceeded. This can happen when a reactive block or effect repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops. Last ten effects:

App.svelte:3:1
App.svelte:10:1
App.svelte:3:1
App.svelte:10:1
App.svelte:3:1
App.svelte:10:1
App.svelte:3:1
App.svelte:10:1
App.svelte:3:1
App.svelte:10:1

...or we could try and be smarter about it so that we identify the actual loop (which aside from truly pathological cases should just be a case of going back until we see the most recent effect earlier in the stack?)

Importance

nice to have

@Rich-Harris Rich-Harris added this to the 5.0 milestone Sep 15, 2024
@dummdidumm
Copy link
Member

The reason I went with the functions itself is that you get a link to the function location "for free", and it is correctly pointing to the source; either what you wrote (via sourcemaps) or what was generated (if sourcemaps are turned off) (which is still useful). Using the stack trace isn't gonna work because for that to be transformed into clickable links correctly you need the generated code location (file + position) info, and at the time when we apply the location information we only have the original code.

@Rich-Harris
Copy link
Member Author

There's several places where we emit ${filename}:${line}:${column} in error and warning messages already, where it wouldn't make sense to print a function (because we're pointing to an element or an attribute or whatever) — I think there's value in consistency, especially since finding the clickable link involves clicking through a bunch of junk

@Rich-Harris Rich-Harris linked a pull request Sep 20, 2024 that will close this issue
5 tasks
Rich-Harris added a commit that referenced this issue Sep 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants