Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix wrong source path resolved from the stack frame to not expose int…
…ernal code (vercel#23203) Currently Next.js exposes internal code in the error overlay if certain errors were created from the user code. Some examples were attached in vercel#20776. We can clearly see that the path is wrong (`../next-server`), it should be `./node_modules/next/dist/next-server`:  The root cause is the `__nextjs_original-stack-frame` middleware resolves the file path with the following code: ```js path.resolve( rootDirectory, getSourcePath(sourcePosition.source) ) ``` where `rootDirectory` is the **app root**, but `sourcePosition.source` comes from the module path, which is relative to the path of the `next` binary, not the app root. That explains why we see `../next-server` from the error above, because it's relative to `./node_modules/next/bin/next`. Because of that, the resolved result will never have `node_modules` in its path and it won't be filtered by the error overlay in the UI. Here's a screenshot of the frame object in the UI:  And the filter we use to determine if a frame is expanded or not only depends on `body.originalStackFrame`: ```js expanded: !Boolean( body.originalStackFrame?.file?.includes('node_modules') ?? true ) ``` So this PR also adds `source.file` check to ensure they will be ignored (not necessary because we fixed the path resolving). Fixes vercel#20776.
- Loading branch information