-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
NestJS TypeScript sentry issues not showing local variables for errors #13768
Comments
Hi @ganjianwei thanks for writing in! Local variables in Node/JS are a bit more complicated than in other languages like python. But I'm gonna tag our local variables integration expert: @timfish could you take a look when you have some time? Thanks! |
v8.30.0 of the SDKs saw some major changes and improvements to local variables capture but this only affects Node >= v20. @ganjianwei What version of Node are you using? |
hey @timfish we're using Node v20.10.0. in case it's helpful, we remember some Sentry issues where it showed local instance variables (e.g. in the NestJS controller code?) so we thought it was because of Mercurius. Unfortunately I can't find those issues with local vars captured to easily pull up Then for this example below it's being run in a bull queue so maybe bull's exception handling for the bull dashboard is messing with Sentry capturing the local vars? Thank you! 🙏 |
@ganjianwei any chance you could provide a minimal reproducible example for this? |
Local variables are fetched through the debugging interface but if we can't apply them to the stack trace they will be missing. We've seen instances where they can't be applied because the stack frames from |
So far here's what I found. The worker that is responsible for capturing local vars from node inspector crashes sometimes on error or when the app starts initially. https://github.com/getsentry/sentry-javascript/blob/develop/packages/node/src/integrations/local-variables/worker.ts#L158 This is where the error occurs due to the objectId being passed no longer exists. So I manually modified the The worker lives, and gets the local vars, but fails to assign the correct The After removing it, correct local vars was being assigned to the exception object. Critical bug
Issue
I created sample Nestjs App with Fastify + Mercurius that you can use to debug that reproduces this issue. |
@designblooz thanks for taking the time to debug this. I've opened a PR to add the try/catch. I need to look further into the interceptor issue. |
xref this comment I added to the PR of why I think this happens: #13827 (comment)
|
hey sentry folks, let us know if you have a timeline / if it's fixable, especially the interceptor issue. Or if there's any workarounds we should try on our side. thanks again for looking into this! |
@ganjianwei you can watch #13827 |
We've merged and released #13827 + have expanded our docs to indicate places where local variables might not work as expected (usually when using esm setups). Please upgrade your SDK to the latest version and try again. Going to close this for now as such. Please re-open if this is still a problem. Thanks! |
Is there an existing issue for this?
How do you use Sentry?
Sentry Saas (sentry.io)
Which SDK are you using?
@sentry/nestjs
SDK Version
8.30.0
Framework Version
NestJS 10.3.0
Link to Sentry event
https://bloom-studios.sentry.io/issues/5891977466/?project=4506396368568320
Reproduction Example/SDK Setup
Steps to Reproduce
Setup NestJS (TypeScript) server app with Sentry like our above setup with:
We also use GraphQL with Mercurius & Fastify.
Have any NestJS module > service > any other code throw an error, and it does not show local variables.
Note we used to use
"@sentry/node": "^7.110.1"
and just tried changing to NestJS to fix this issue, but to no avail.Expected Result
I'd expect to see local variables in my Sentry page for easier debugging, as we've seen in other integrations (e.g. Django/Python, and also we see the local variables when there's errors in our NestJS controller code specifically, but not everywhere else).
E.g. from your blog post: https://blog.sentry.io/local-variables-for-nodejs-in-sentry/
Actual Result
No local variables in my Sentry issue page for debugging
E.g.
Thank you!
The text was updated successfully, but these errors were encountered: